【问题标题】:How to override click event in jquery如何在jquery中覆盖点击事件
【发布时间】:2016-04-07 20:52:26
【问题描述】:

我正在使用 JavaScript 和 JQuery,有来自 jquery.js 的点击事件的参考,

在这里我试图覆盖点击事件,它没有发生。 即使被覆盖,它仍然是旧的而不是新的。 有没有办法根据优先级加载事件?

【问题讨论】:

  • stackoverflow.com/questions/1491718/… 这可能会有所帮助
  • “我正在尝试覆盖点击事件” ...“有没有办法根据优先级加载事件” 这些语句是矛盾的。目前尚不清楚您是要覆盖以前的处理程序,还是根据优先级按特定顺序调用处理程序。
  • .. 我不知道这与 jquery-ui 和 javascript-objects 有什么关系..

标签: javascript jquery jquery-events


【解决方案1】:

如果我理解正确,这对你有用:

$('.xxx').off('click').on('click', function(e) {
    e.preventDefault();
}

【讨论】:

  • 感谢奥斯卡的回答。你能告诉我上面的函数会做什么吗?
  • 使用“e.preventDefault()”,点击变得个性化,现在你可以应用你想要的,取消默认使用,你可以在那里编写你的函数。
  • 感谢您的所有回答,我将取消绑定或关闭选择器上的点击功能,但这些选择器是使用数据切换的选项卡。那么当我们取消绑定或关闭点击功能时,数据切换是否会按预期工作?意味着当我点击选项卡(使用数据切换)时,它应该可以按预期工作,但点击事件应该与该标签的选择器解除绑定。
【解决方案2】:

.click() 每次调用时都会添加一个新的处理程序,而不是覆盖现有的处理程序。执行将按照它们绑定的顺序。

在添加新元素之前,您可以使用 $(id).unbind() 清除该元素上的处理程序。

【讨论】:

    【解决方案3】:

    你需要做的是先调用'unbind'方法然后'bind'方法来编写Jquery的新点击事件, 并确保所有 Jquery 插件都正确加载,下面是一个示例:

    $("#button").unbind("click").bind("click", function(){
            alert("this is Overridden click event!");
        });
    

    【讨论】:

    • 感谢您的所有回答,我将取消绑定或关闭选择器上的点击功能,但这些选择器是使用数据切换的选项卡。那么当我们取消绑定或关闭点击功能时,数据切换是否会按预期工作?意味着当我点击选项卡(使用数据切换)时,它应该可以按预期工作,但点击事件应该与该标签的选择器解除绑定。
    【解决方案4】:

    也许您需要“取消绑定”定义为内联属性的点击事件。在这种情况下,您可以使用 $.removeAttr() 方法。

    $(SELECTOR).removeAttr('onclick');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多