簡體   English   中英

為什么我不能將我的函數放在jQuery(document).ready(function(){}中

[英]Why can't I put my function inside jQuery(document).ready(function() { }

為什么我不能將函數放在jQuery(document).ready(function() { }

 function csf_map_maker_js( args ) {

      // Default js args.  Args passed to function will override these.
      var default_args = {
        width : 610,
        height : 400,
        latitude :  37.93,
        longitude :  -75.09,
        zoom : 8,
        mtype: 'ROADMAP',
        encoded_points: ' blah blah',
        id: 'csf_map_canvas',
        hood: 'My Neighborhood'
      }; 


      for ( var index in default_args ) {
        if ( typeof args[index] == "undefined" ) {
          args[index] = default_args[index];

        }
      }


     var latlng = new google.maps.LatLng(args['latitude'], args['longitude']);
     var encodedPoints = args['encoded_points'];
     var decodedPoints = google.maps.geometry.encoding.decodePath(encodedPoints);

     var myOptions = {
        zoom: parseInt( args['zoom'] ),
        center: latlng,
        mapTypeId: google.maps.MapTypeId[args['mtype']],
        streetViewControl: true,
        zoomControl: true,
        panControl: true
      };


    csf_map = new google.maps.Map(document.getElementById( args['csf_id'] ), myOptions);

     var encodedPolygon = new google.maps.Polyline ({
        strokeColor: "#0000FF",
        strokeOpacity: 0.55,
        strokeWeight: 5,
        path: decodedPoints,
        fillOpacity: 0,
        clickable: false,
        map: csf_map
     });
}

如果將其放在外面,則(document).ready塊將起作用(盡管我認為在加載地圖之前會調用其他一些函數)。 該代碼適用於WordPress插件。

該函數在php腳本中被調用,如下所示:

$csf_map_output .= '<div id="csf_map_canvas" style="width:'. $atts['width'].'px; height: '. $atts['height'] .'px;"></div>'; 

$csf_map_output .= '<script>var csf_map_params = ' .  json_encode( $atts ) .  '; csf_map_maker_js( csf_map_params );</script>';  

return $csf_map_output;

當它在jQuery(document).ready(function() { }內時,是否需要更改該函數在php腳本中的調用方式?

函數聲明的范圍是在內部定義的任何函數。

如果在匿名函數內進行函數聲明(無論是否將其傳遞給document.ready都沒有關系),則該匿名函數外的代碼將無法調用該聲明。

如果將函數放入jQuery(document).ready(function() { }); 並且您從php調用的函數不在jQuery(document).ready(function() { }); 在創建函數之前會調用您的函數,因此該函數在該時刻不存在

因此,但都在jQuery(document).ready(function() { }); 並確保您的函數在調用之前已聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM