如何连接两个与OR运算符相同的jquery函数



嗨,

我有两个功能可以做完全相同的事情:

$("#submitmsg").click(function () {
sendmessage();
});

///second function 
$("#usermsg").keypress(function(e) {
if (e.which == 13) {  
console.log(e.shiftKey ? 'Shift & Enter' : 'Enter only')
if (!e.shiftKey) {
sendmessage();
}
}
});

我想保存尽可能多的代码,所以我更喜欢像";如果该函数或该函数";。类似这样的东西:

if $("#submitmsg").click || $("#usermsg").keypress(13) && !13.shiftKey {
sendmessage();
}

但是我的语法不正确。它是如何完成的?

谢谢。

您可以删除匿名函数作为click处理程序,因为它只不过是将调用传递给sendmessage()。只需将sendmessage函数引用直接作为传递即可

$("#submitmsg").click(sendmessage);

第二个函数不能与第一个函数组合,因为id选择器和触发事件都不同。但是,你可以把它缩小到

$("#usermsg").keypress(e => {
if (e.which == 13 && !e.shiftKey)
sendmessage();
});

除非console.log呼叫对您很重要。

您可能想要尝试的是将多个事件与同一处理程序组合。

我认为这在所示的场景中并不实用,因为在其中一种情况下,您也有不同的选择器和一些条件逻辑。

使用检查event.type的相同选择器执行此操作的一个非常简单的示例如下:

$('#test').on('focus input', function(e){
console.log(`Event type= ${e.type}`);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="test" placeholder="edit me"/>

最新更新