防止触发两种事件类型

时间:2013-08-08 18:50:14

标签: jquery event-handling keycode

我遇到的情况是,当用户点击或键入enter时,我想切换一些内容。

不幸的是,我正在开发一个庞大的网站,该网站在某个地方收听enter密钥,并在收到{{1> 某些项时触发.click() keyup。我找不到它,我不想(或能够)改变它,如果我能找到它,但它的行为就像这样:

enter

结果是,当用户键入$("#item").on("keyup", function(event){ if(event.keyCode == 13){$('#item').click();} }); 并撤消自身时,我的“切换”脚本会运行两次。

enter

Here's a JSFiddle.

当有人点击进入时,有没有办法防止$('body').on('click keyup', '#item', function(e) { console.log("-----------------"); if(e.type=="click") { console.log("Event Type: " + e.type); //toggle something } else { console.log("Event Type: " + e.type+ ", keyCode: " + e.keyCode); //toggle something } }); keyup被解雇?显而易见的答案是删除脚本的click部分,然而,这对我不起作用,因为[enter] - > [click]脚本不是普遍适用的,所以我需要keyup键来处理不适用的元素。

1 个答案:

答案 0 :(得分:1)

您可以使用事件命名空间。

IE:

$(el).on('keyup:hamza', function(){ 
    //Detect if it was called by an element with event namespaced and do different code
})

您也可以使用off('keyup:hamza')仅删除您的活动..