添加事件侦听器而不覆盖

时间:2014-12-12 22:48:01

标签: javascript jquery javascript-events keyup

我正在为某个输入上的keyup设置一个eventListener。然后在代码中,我需要能够在不覆盖第一个事件的情况下向该侦听器添加另一个事件(两个函数必须执行)。这有可能实现吗?

我试过了:

$input.keyup(function...)

$input.bind('keyup',function(){...});

$input.addEventListener('keyup',function(){...});

我还没有能够得到任何工作。

2 个答案:

答案 0 :(得分:2)

Namespace可以on您的听众:

$input.on('keyup.one', function () {})
$input.on('keyup.two', function () {})

这样您就可以在不删除第一个听众的情况下拨打$input.off('keyup.two')

答案 1 :(得分:1)

除非调用stopImmediatePropagation,否则添加事件处理程序不会破坏之前添加的事件处理程序。

这是一个例子。单击该按钮时,两个事件处理程序都会触发。



var $p = $('p');
$('button').click(function() {
  $p.html($p.html() + ' *event handler 1* ');
})

$('button').click(function() {
  $p.html($p.html() + ' *event handler 2* ');
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button>click me</button>
<p></p>
&#13;
&#13;
&#13;