【问题标题】:Two "or" conditions for event?事件的两个“或”条件?
【发布时间】:2012-07-15 15:29:02
【问题描述】:

小提琴:http://jsfiddle.net/TKWzH/8/

“Test Pop”是项目的当前功能。 “Test Pop 2”是我希望我的脚本发挥的作用。然而,实际的脚本在点击执行方面比仅仅关闭弹出窗口有更多的功能。

有没有办法将 on enter 和 on mouseup 命令合并到一行中?

$("#popup2 label").on('keyup || mouseup', function (event) {
    $('#popup2').css('display', 'none');
});

我正在寻找类似的东西,但我希望键最多只能用于 enterkey 键。正如所写,它发生在任何键上。

我尝试这样做的原因是因为我想让表单键盘可以访问。从小提琴中可以看出,如果您使用键盘在 Test Pop 中导航,则必须在选择单选按钮后重新打开对话框。

【问题讨论】:

  • 也可以使用空格键选择收音机。

标签: jquery button click radio mouseup


【解决方案1】:

只需使用一个空格。

$("#popup2 label").on('keyup mouseup', function (e) {
    if (e.type == 'keyup' && e.which != 13) return;
    $('#popup2').css('display', 'none');
});

来自docs

 .on( events [, selector] [, data], handler(eventObject) )

事件一种或多种空格分隔事件类型和可选命名空间,例如“click”或“keydown.myPlugin”。

【讨论】:

  • 感谢这很好用!尽管我不得不将其调整为: $("#popup2 label").on('keyup || mouseup', function (event) { if (event.type == 'keyup' && event.which != 13) return; $('#popup2').css('display', 'none'); });
【解决方案2】:
$("#popup2 label").on('keyup mouseup', function (e) {
    if (e.type==='keyup') { //key was pressed
        var code = (e.keyCode ? e.keyCode : e.which);
        if(code == 13) { //Enter was pressed
            //Do something
            $('#popup2').css('display', 'none');
        }
    }else{
        //mouseup was the trigger
        $('#popup2').css('display', 'none');
    }
});

可以简化很多,但只是为了展示它是如何完成的!

【讨论】:

  • 没有必要做整个e.keyCode ? e.keyCode : e.which舞蹈——jQuery为你规范了事件。
  • 我不想要冗余代码,因为除了样式更改之外还有很多事情发生。这就像样式更改,以及其他几个应该在点击时发生的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
相关资源
最近更新 更多