Почему я не могу поместить свою функцию в jQuery (документ) .ready (function () {} - PullRequest
0 голосов
/ 16 ноября 2011

Почему я не могу поместить функцию ниже в 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;

Нужно ли менять способ вызова функции в скрипте php, когда он внутри jQuery(document).ready(function() { }?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

если вы поместили вашу функцию в jQuery(document).ready(function() { });, а ваш вызов функции из вашего php не в jQuery(document).ready(function() { }); ваша функция вызывается до того, как функция создана, поэтому она не существует в этот момент

так, но оба в jQuery(document).ready(function() { }); и убедитесь, что ваша функция объявлена ​​до ее вызова.

2 голосов
/ 16 ноября 2011

Область объявления функции - это любая функция, внутри которой она определена.

Если вы делаете объявление функции внутри анонимной функции (не имеет значения, передаете ли вы ее в document.ready или нет), то она не может быть вызвана кодом вне этой анонимной функции.

...