我正试图让jQuery在传递选择器中的值后更新它们。我的意思是这个。
我像这样通过选择器。
var items = ['.item-1','.item-2'...];
$(items[1]).click(function(){....});
然后在函数的末尾,我更改项数组的顺序。
var items = ['.item-1','.item-2'...];
$(items[1]).click(function(){
// ... function
items = ['.item-3', '.item-1' ...];
});
现在的问题是,函数绑定到初始项[1],所以我对数组的更改实际上并不重要。我确信应该有一个不太复杂的解决方案,所以你能给我指明正确的方向吗?
您可以将one
方法与递归模式结合使用
var items = ['.item-1','.item-2','.item-3'];
$(items[1]).one('click', clickHandler);
function clickHandler() {
items = //re-sort items;
$(items[1]).one('click', clickHandler);
}
考虑到数组索引是从零开始的,所以在执行items[1]
时使用的是第二项,而不是第一项。
我认为您必须使用递归方法。
可能是:
var items = ['.item-1','.item-2'];
function redefine(){
$(items[1]).click(function(){
items = ['.item-3', '.item-1'];
$(this).unbind("click");
redefine();
});
}
redefine()