【问题标题】:function off () cancel click for all elementsfunction off() 取消所有元素的点击
【发布时间】:2017-04-06 17:53:50
【问题描述】:

我有一段代码:

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 有关,它取消了所有其他元素的单击“防止”。

请告知如何完成。谢谢。

【问题讨论】:

  • 呃什么?请详细说明
  • 您究竟想通过取消绑定文档的点击事件来实现什么?

标签: jquery document


【解决方案1】:

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

【讨论】:

  • 太多了!忘记了这个解决方案!
【解决方案2】:

您可以扩展您的选择器以不再选择具有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

【讨论】:

  • 太多了!忘记了这个解决方案!
猜你喜欢
  • 2018-02-14
  • 2011-12-29
  • 2018-04-11
  • 2012-03-19
  • 1970-01-01
  • 2018-01-21
  • 2023-03-12
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多