EMi*_*ler 1 javascript jquery scope arguments function
我觉得这一定是有问题的,但我无法通过搜索找到它.
以下是令我困惑的问题的完整示例:
<html><head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
(function($){
$.fn.testPlugin = function(options){
settings = $.extend({val : "default"}, options);
return this.each(function(){
$(this).click(function(e){
e.preventDefault();
console.log(settings.val);
});
});
}
})(jQuery);
$(document).ready(function(){
$('a#a1').testPlugin();
$('a#a2').testPlugin({val : 'new val'});
});
</script>
</head><body>
<a href="#" id="a1">A1</a>
<a href="#" id="a2">A2</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
单击任一链接都会将"new val"记录到您的firebug控制台.您可以想象我希望第一个链接保留默认设置,第二个链接设置我的覆盖设置.为插件实现这一点必须有一个标准模式吗?
我认为你需要用来var保持settings变量的范围.尝试:
$.fn.testPlugin = function(options){
var settings = $.extend({val : "default"}, options);
return this.each(function(){
$(this).click(function(e){
e.preventDefault();
console.log(settings.val);
});
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |