2011-11-16 25 views
0

为什么我不能把下面的函数内部jQuery(document).ready(function() { }为什么我不能把我的功能jQuery的(文件)。就绪内(函数(){} t

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 
    }); 
} 

如果我把它放在外面, (文档).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() { }

+0

此代码似乎缺少结尾'}' - 是你的问题吗? – Hogan

+0

尝试$(document).ready(function(){}); – stat

+0

谢谢你的留言。我得到了结局);在我的代码中,但我没有将其包含在我的问题中。 $与编写jQuery相同。 – Laxmidi

回答

2

,如果你把你的函数在jQuery(document).ready(function() { });和你从你的PHP函数的调用不在jQuery(document).ready(function() { });所以它不会在那一刻

左右,但无论是在存在于您的函数创建函数调用之前, jQuery(document).ready(function() { });并确保你的函数在被调用之前被声明。

+0

Hi @Frederick Behrends,谢谢你的留言。我必须从PHP脚本中调用该函数。如何让php脚本调用(document).ready(function(){})中的函数; ?对不起,我很困惑。 – Laxmidi

+2

'$ csf_map_output。=''; ' –

+0

谢谢你的帮助! – Laxmidi

2

函数声明的范围是它在里面定义的任何函数。

如果你在一个匿名函数中做一个函数声明(把它传递给document.ready没关系),那么它不能被匿名函数以外的代码调用。

+0

非常感谢您的评论。据我了解,我必须保持匿名函数以外的功能。在这种情况下,如何在加载所有内容后从php脚本调用函数?谢谢。 – Laxmidi

+0

把它放在onload而不是onready。 – Quentin

相关问题