JavaScript传递参数问题
我有以下代码JavaScript传递参数问题,javascript,reference,Javascript,Reference,我有以下代码 for (var i = 0; i < that.$el.mini.length; i++) { var pag = that.$el.mini[i].pagination; // Mini-Slider Pagination $('li', pag).each( function(j, el) { $(el).click( function() {
for (var i = 0; i < that.$el.mini.length; i++) {
var pag = that.$el.mini[i].pagination;
// Mini-Slider Pagination
$('li', pag).each( function(j, el) {
$(el).click( function() {
/*
* Toggle Mini-Slide
*/
that.slider_fn.mini.show(i, j);
return false;
});
});
}
for(var i=0;i
所以,基本上,我想做的是运行这个函数that.slider\u fn.mini.show(I,j)单击元素时的代码>
问题是我想使用变量I
,它会更改循环中的值。单击元素时,i
作为最新的数值,即that.$el.mini.length
如何使JavaScript(或函数)记住该特定数字?使用闭包关闭I
的值:
$(el).click( (function(i_){
return function() {
that.slider_fn.mini.show(i_, j);
return false;
};
})(i));
之前,您的函数引用了名为i
的变量,现在在每次迭代中,您都会创建一个引用i
的新函数,该变量对于每个函数都是唯一的,并且在创建函数时引用了i
的值。使用闭包关闭i
的值:
$(el).click( (function(i_){
return function() {
that.slider_fn.mini.show(i_, j);
return false;
};
})(i));
之前,您的函数引用了名为i
的变量,现在在每次迭代中,您都会创建一个引用i
的新函数,该变量对于每个函数都是唯一的,并且在创建函数时引用i
的值。您需要创建函数闭包,并将要作为参数持久化的变量传入,如下所示:
for (var i = 0; i < that.$el.mini.length; i++) {
var pag = that.$el.mini[i].pagination;
$('li', pag).each(function (j, el) {
// function closure to persist i, j, and el
(function (idx, jdx, elem) {
$(elem).click(function () {
that.slider_fn.mini.show(idx, jdx);
return false;
});
} (i, j, el));
});
}
for(var i=0;i
您需要创建一个函数闭包,并将要作为参数持久化的变量传入,如下所示:
for (var i = 0; i < that.$el.mini.length; i++) {
var pag = that.$el.mini[i].pagination;
$('li', pag).each(function (j, el) {
// function closure to persist i, j, and el
(function (idx, jdx, elem) {
$(elem).click(function () {
that.slider_fn.mini.show(idx, jdx);
return false;
});
} (i, j, el));
});
}
for(var i=0;i
这是假设pag是一个元素,并且您正在使用jquery
对于(var i=0;i
}这是假设pag是一个元素,并且您正在使用jquery
对于(var i=0;i
}/P>< P>给出的闭合答案是解决问题的常规方法,但是如果不关心自调用匿名函数,则可以考虑使用<代码>前述()/代码>:
警告:forEach()
并非在所有浏览器中都实现。您可以看到如何修改它,如在的“兼容性”下所描述的,给出的闭合答案是解决问题的常规方法,但是如果不关心自调用匿名函数,则可以考虑使用<代码>前述()/代码>:
警告:forEach()
并非在所有浏览器中都实现。您可以看到如何调整垫片,如的“兼容性”下所述,或者您也可以完成闭合,但我认为这更干净。更干净,从哪个角度看?数据函数向HTML页面添加大量信息。我有很多UL和LI。数据与元素一起存储,而不是每次要将数据与对象关联时都创建一个全新的匿名函数闭包。这不会向元素添加特定的信息,而是存储在jquery对象哈希中。但是您还是要创建函数吗?这完全是意见问题。如果您认为创建一个返回匿名函数的函数更简单,那么我个人认为它更难阅读。由于变量i的状态在另一个状态中,所以调试也比较困难。但说真的,它太小了,不管怎样……或者你也可以做闭包,但我认为这更干净。更干净,从哪个角度看?数据函数向HTML页面添加大量信息。我有很多UL和LI。数据与元素一起存储,而不是每次要将数据与对象关联时都创建一个全新的匿名函数闭包。这不会向元素添加特定的信息,而是存储在jquery对象哈希中。但是您还是要创建函数吗?这完全是意见问题。如果您认为创建一个返回匿名函数的函数更简单,那么我个人认为它更难阅读。由于变量i的状态在另一个状态中,所以调试也比较困难。但说真的,它太小了,不管怎样……谢谢。我已经知道应该实现一些与函数相关的东西,但是忘记了ClosureStanks。我已经知道应该实现一些与函数相关的东西,但是忘记了闭包