<script>
(function($, window, document, undefined) {
$.fn.testPlugin = function(options) {
this.each(function() {
$$ = this;
$(window).on('scroll',function() {
console.log($$);
})
});
}
})(jQuery, window, document)
$("#block1").testPlugin();
$("#block2").testPlugin();
<script>
为什么它只显示#block2元素而不是同时记录block1和block 2?
答案 0 :(得分:1)
这是因为$$
被定义为全局(在浏览器的情况下为窗口)而不是本地(由于缺少var),这导致其值为使用插件的最后一个元素,覆盖任何其他以前的。只需在插件函数中使用var
定义它,它就可以正常工作。
this.each(function () {
var $$ = this; //<-- Here
$(window).on('scroll', function () {
console.log($$);
})
});
<强> Demo 强>