是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
当前回答
可以使用bind方法将函数附加到多个事件。只需要传递事件名称和处理函数,如下所示:
$('#foo').bind('mouseenter mouseleave', function() {
$(this).toggleClass('entered');
});
另一个选择是使用jquery api的链接支持。
其他回答
你可以这样定义你想重用的函数:
var foo = function() {...}
之后,你可以在你的对象上设置任意数量的事件监听器来触发该函数,使用on('event'),在中间留出一个空间,如下所示:
$('#selector').on('keyup keypress blur change paste cut', foo);
我正在寻找一种方法来获得事件类型时,jQuery监听几个事件,谷歌把我放在这里。
对于那些感兴趣的人,event。键入是我的答案:
$('#element').on('keyup keypress blur change', function(event) {
alert(event.type); // keyup OR keypress OR blur OR change
});
更多信息请参阅jQuery文档。
用内置的DOM方法实现这个很简单,不需要像jQuery这样的大库,如果你想,它只需要更多的代码-迭代一个事件名称数组,并为每个事件添加一个侦听器:
function validate(event) {
// ...
}
const element = document.querySelector('#element');
['keyup', 'keypress', 'blur', 'change'].forEach((eventName) => {
element.addEventListener(eventName, validate);
});
如果你想模拟添加多个元素:
const elements = document.querySelectorAll('.commonSelector');
['keyup', 'keypress', 'blur', 'change'].forEach((eventName) => {
elements.forEach(element => {
element.addEventListener(eventName, validate);
});
});
我就是这么做的。
$("input[name='title']").on({
"change keyup": function(e) {
var slug = $(this).val().split(" ").join("-").toLowerCase();
$("input[name='slug']").val(slug);
},
});
从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。
$(document).on('mouseover mouseout',".brand", function () {
$(".star").toggleClass("hovered");
})