0

我试图让 jQuery 在它们被传递后更新选择器中的值。我的意思是这个。

我正在传递这样的选择器。

var items = ['.item-1','.item-2'...];
$(items[1]).click(function(){....});

然后在函数结束时更改 items 数组的顺序。

var items = ['.item-1','.item-2'...];
$(items[1]).click(function(){
    // ... function
    items = ['.item-3', '.item-1' ...];
});

现在的问题是该函数绑定到初始项目[1],所以我对数组的更改并不重要。我很确定应该有一个不太复杂的解决方案,所以你能指出我正确的方向吗?

4

2 回答 2

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].

于 2015-06-29T21:36:05.467 回答
1

我认为你必须使用递归方法。

它可能是:

   var items = ['.item-1','.item-2'];
    function redefine(){
        $(items[1]).click(function(){
            items = ['.item-3', '.item-1'];
            $(this).unbind("click");
            redefine();
        });
    }
    redefine()
于 2015-06-29T21:37:22.853 回答