如何连接 2 个 jquery 函数,它们与 OR 运算符的作用相同?
How to concatenate 2 jquery functions that do the same with an OR operator?
嗨,
我有 2 个功能完全相同:
$("#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 this function OR this function”之类的东西。像这样:
if $("#submitmsg").click || $("#usermsg").keypress(13) && !13.shiftKey {
sendmessage();
}
但我无法正确理解语法。它是怎么做到的?
谢谢。
您可能想尝试的是将多个事件与同一个处理程序结合起来。
我认为这在显示的场景中不实用,因为在其中一种情况下您还有不同的选择器和一些条件逻辑。
使用检查 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"/>
您可以删除作为 click
处理程序的匿名函数,因为它只是将调用传递给 sendmessage()
。只需将 sendmessage
函数引用直接传递为
$("#submitmsg").click(sendmessage);
您的第二个函数不能与第一个函数结合使用,因为 id
选择器和触发事件都不同。但是,您可以将其精简到
$("#usermsg").keypress(e => {
if (e.which == 13 && !e.shiftKey)
sendmessage();
});
除非 console.log
电话对您很重要。
嗨,
我有 2 个功能完全相同:
$("#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 this function OR this function”之类的东西。像这样:
if $("#submitmsg").click || $("#usermsg").keypress(13) && !13.shiftKey {
sendmessage();
}
但我无法正确理解语法。它是怎么做到的?
谢谢。
您可能想尝试的是将多个事件与同一个处理程序结合起来。
我认为这在显示的场景中不实用,因为在其中一种情况下您还有不同的选择器和一些条件逻辑。
使用检查 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"/>
您可以删除作为 click
处理程序的匿名函数,因为它只是将调用传递给 sendmessage()
。只需将 sendmessage
函数引用直接传递为
$("#submitmsg").click(sendmessage);
您的第二个函数不能与第一个函数结合使用,因为 id
选择器和触发事件都不同。但是,您可以将其精简到
$("#usermsg").keypress(e => {
if (e.which == 13 && !e.shiftKey)
sendmessage();
});
除非 console.log
电话对您很重要。