【问题标题】:Event managment: Replace click event事件管理:替换点击事件
【发布时间】:2011-12-21 09:41:18
【问题描述】:

我有一个带有单击事件的按钮(来自 3. 方库),它提交表单。我喜欢移除点击事件,添加我自己的函数并在验证后调用原始事件。

我以为我只是添加了一个 event.stopImmediatePropagation(); 但这不起作用。可能是因为添加事件的顺序(?)。

是管理事件执行的另一种方式吗?

或者我怎样才能让旧事件做这样的事情:

originalClickEvent = $('#button').doSomeMagicAndGetTheEvent('click');
$('#button').unbind();
$('#button').bind('click', function (event) {
  if (valid()) originalClickEvent();
});

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    看这里Remove all JavaScript event listeners of an element and its children?

    删除事件侦听器后,您可以附加自定义事件。

    如果我对您的理解正确,这就是您正在寻找的效果:http://jsfiddle.net/ftGHq/

    【讨论】:

    • $('#button').unbind();工作正常,但我如何获得旧事件?
    • 是的,你做到了,这是一个非常有创意的解决方案。但也许有点脏;)
    • 请不要在您的帖子上签名。
    • .. 并将代码添加到您的答案中。链接可以很好地补充答案,但它本身仍应作为答案,其中包含解决问题的所有信息。
    【解决方案2】:

    如果点击事件只绑定到一个函数,您可以覆盖该函数:

    var oldFunction = theOldFunction;
    function myFunction(control) {
    
        oldFunction(control);
    }
    
    $('#button').unbind();
    $('#button').click(myFunction); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      相关资源
      最近更新 更多