重新定义点击选择器 jQuery

Redefine click selector jQuery

我正在尝试让 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()