将jquery变量定义为超出范围的函数

时间:2013-04-20 20:21:37

标签: javascript jquery function variables scope

我正在尝试将参数(gmap_settings)传递给包含的外部js文件中的函数(initialize)。我的php文件看起来像这样:

<?php
$setting = array(
    'zoom' => 8
);

$json = json_encode($setting);
?>

<script type="text/javascript">
//<![CDATA[

jQuery(document).ready(function($) {
    var gmap_settings = $.parseJSON ('<?php echo $json; ?>');
--> google.maps.event.addDomListener(window, 'load', $(document).initialize(gmap_settings));
});

//]]>
</script>

为简单起见,我们假设外部js文件如下所示:

(function($) {
    var initialize = function( data ) { alert(data); };
})( jQuery );

无论我尝试什么,我都无法弄清楚如何将gmap_settings传递给initialize()。我在外部文件中尝试了函数initialize()

$(document).initialize.gmap_settings
$(document).initialize({gmap_settings})
initialize(gmap_settings) 

我不明白我错过了什么。

1 个答案:

答案 0 :(得分:1)

为什么你认为$(document).initialize会起作用?

您可以在外部javascript文件中实现模块模式并返回一个对象并在该对象上调用initialize

var YourModule = (function($) {
    return {
       initialize: function( data ) { alert(data)} 
    };
})( jQuery );

现在你有一个可以使用的变量

var newModule = Object.create(YourModule);
newModule.initialize('This will be alerted')