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

时间:2017-04-06 09:50:27

标签: jquery document

我有一段代码:

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,取消点击所有其他元素的“阻止”。

请告知如何做到这一点。感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用:not()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");
    }

答案 1 :(得分:0)

您可以将您的选择器扩展为不再选择具有属性data-num="1"的元素,如下所示:

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