问题
我刚开始学习javascript。我正在尝试以更模块化的方式重现一段工作代码。它帮助我保持清洁,并更好地理解它。
我确信有更有效或更简洁的方法来实现代码的功能,所以请女士/男士不要提及它 - 你可以省去呼吸。这里的重点是通过玩代码来学习我还不明白的东西。
代码有什么作用
它为已弃用的方法切换创建了一种替代方法,
然后可以按以下方式使用$('#foo h2').mytoggle(plus,minus);
下面是一段原始代码:
$.fn.clicktoggle = function(a, b) {
return this.each(function() {
var clicked = false;
$(this).click(function() {
if (clicked) {
clicked = false;
return b.apply(this, arguments);
}
clicked = true;
return a.apply(this, arguments);
});
});
};
以下是我之前代码的版本:
function call_a_or_b (a,b) {
var clicked = false;
function alternate (a,b) {
if (clicked) {
clicked = false;
return a.apply(this, arguments);
}
else {
clicked = true;
return b.apply(this, arguments);
}
} // end function alternate
return $(this).each(function () {$(this).click(alternate(a,b))});
} //end function call_a_or_b
$.fn.clicktoggle = function(a,b) { call_a_or_b(a,b); };
问题
为什么原始版本使用
return this.each
而不是return $(this).each
?- 注意:我不能
this
在我的版本上使用,否则会返回错误:Uncaught TypeError: Object [object global] has no method 'each'
- 注意:我不能
不是
each
jQuery方法吗?- 据我了解,在使用时
this
,您可以在其上调用 DOM 方法,但不能调用 jQuery 方法。反之亦然。
- 据我了解,在使用时
为什么我的版本不工作?我错过了什么?
- 注意:我没有错误,因此更难调试。