function off() 取消对所有元素的点击

function off () cancel click for all elements

我有一段代码:

jQuery(function($){
    $(document).on("click", ".product-image-mobile .product-image", function (e) {
        $(this).attr('data-num', 1);
        e.preventDefault();
        if ($(this).attr("data-num") == 1){
             $(document).off("click", ".product-image-mobile .product-image");
        }
    });
});

先点击产品图片显示另一张图片,再点击进入产品页面。 通过 ajax 加载产品。 对于第一个产品图片,此代码有效,但对其他产品无效。我认为它与 $(document).off 有关,它取消了所有其他元素的点击 "prevent"。

请指教如何做到这一点。谢谢

您可以使用:not() and Attribute value selector的组合来绑定事件。

$(document).on("click", ".product-image-mobile .product-image:not([data-num='1'])", function (e) {
    $(this).attr('data-num', 1);
    e.preventDefault();        
});

我不确定,但我想你也可以使用

    if ($(this).attr("data-num") == 1){
         $(event.target).off("click");
    }

您可以像这样扩展 selector 不再具有属性 data-num="1" 的 select 元素:

jQuery(function($){
    $(document).on("click", ".product-image-mobile .product-image[data-num!='1']", function (e) {
        $(this).attr('data-num', 1);
        e.preventDefault();
    });
});

另请参阅:attribute-not-equal-selector