0

我处于一种情况,我想在用户单击或键入时切换某些内容enter

不幸的是,我正在一个大型站点上工作,该站点在某个地方侦听键并在某些项目收到键时enter触发。我找不到在哪里,如果我能找到它,我不想(或能够)改变它,但它的行为就像这样:.click()enter

$("#item").on("keyup", function(event){
    if(event.keyCode == 13){$('#item').click();}
});

结果是我的“切换”脚本在用户键入时运行两次enter,自行撤消。

$('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
    }
});

这是一个 JSFiddle。

当有人击中进入时,有没有办法防止两者都keyupclick解雇?显而易见的答案是删除keyup脚本的一部分,但是,这对我不起作用,因为 [enter] --> [click] 脚本没有被普遍应用,所以我需要enter密钥来处理它所在的元素不适用。

4

1 回答 1

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') 仅删除您的事件..

于 2013-08-08T20:14:08.140 回答