Javascript 了解插件代码中$内传递的参数的用法。
我是Jquery新手,刚刚学习了一些新东西,刚刚阅读了chris coyers的文章,发现了以下代码:Javascript 了解插件代码中$内传递的参数的用法。,javascript,jquery,Javascript,Jquery,我是Jquery新手,刚刚学习了一些新东西,刚刚阅读了chris coyers的文章,发现了以下代码: $.fn.faq = function(options) { return this.each(function(i, el) { var base = el, $base = $(el); console.log(options); base.init = function() { //
$.fn.faq = function(options) {
return this.each(function(i, el) {
var base = el,
$base = $(el);
console.log(options);
base.init = function() {
// Do initialization stuff
$base
.find("dd")
.hide()
.end()
.find("dt")
.click(function() {
var ans = $(this).next();
if (ans.is(":visible")) {
base.closeQ(ans);
} else {
base.openQ(ans);
}
})
};
base.openQ = function(ans) {
// Open panel
ans.show();
// Do callback
options.qOpen.call();
};
base.closeQ = function(ans) {
// Open panel
ans.hide();
// Do callback
options.qClose.call();
};
base.init();
});
};
$("dl").faq({
qOpen: myQuestionOpenCallback,
qClose: myQuestionCloseCallback
});
function myQuestionOpenCallback() {
alert("answer opened!");
}
function myQuestionCloseCallback() {
alert("answer closed!");
}
现在我不太理解这部分代码(请看下面):
代码中的第二行,i
和el
到底是什么??我没有看到这些参数被传递到each函数的任何地方
我问了我的一位同事,得到了以下答案
很多插件都是这样开始的。因为大多数插件都是可链接的,所以它们
我必须归还这个。它们还必须在元素之间循环
从选择器
return this.each(function(i, el) {
两者都有。一个循环,然后返回
但我还是不太明白
可以找到Jsbin小提琴
多谢各位
亚历山大
- i:元素的索引
- el:DOM元素(不是jQuery对象)
这个
指的是jQuery对象,表示您在其上调用的插件。例如,在这个faq
插件的情况下,如果我调用$('#someDiv').faq({…})
,此
将与插件函数中的$(“#someDiv”)
相同
因此,由于它是一个表示DOM节点选择的jQuery对象,因此您可以在其上调用jQuery方法.each()
,该方法在为选择中的每个DOM节点调用该方法时,将获取给定的两个参数:
.each()
还返回调用它的对象,因此您最终从插件返回$('#someDiv')
对象。这很好,因为这样我们就可以直接调用其他jQuery方法(“链接”)。e、 g.$('#someDiv').faq({…}).hide()编码>以立即隐藏它。请参阅i
和el
通过jQuery传递。这意味着el
在这种情况下表示每个选中的此
?请这样想,如果我的页面上有两个
并且我调用$('.my class').faq()
,那么您正在谈论的函数将被调用两次。第一次i
将是0
和el
将是第一个div的DOM节点。第二次i
将是1
和el
将是第二个div的DOM节点。谢谢@GregL,非常好的解释。
return this.each(function(i, el) {