[英]Why can't I use onClick to execute a function inside a 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.