我想要在keyup
上为class
textfields
的{{1}}执行一项功能。
当只有一个类被分配给keyup
时,下面的代码运行良好,但是当我添加第二个class
时,它可以工作,但是存在很多延迟。 class
本身都可以正常工作,所以我假设我不正确地将第二个class
添加到事件处理程序中。代码是:
$(document).ready(function(){
$(".class1").each(function() {
//!!!!!!! .class2 here adds lag !!!!!!!!!!
$('.class1,.class2').keyup(function(){
myFunction1();
});
});
$(".class2").each(function() {
$(this).keyup(function(){
myFunction2();
});
});
});
答案 0 :(得分:7)
看来你正在连接太多的事件 - 因此滞后。 你也不需要.each,那就是迭代每个元素。 尝试简化如下:
$(document).ready(function(){
$('.class1,.class2').keyup(function(){
myFunction1();
if ($(this).hasClass('class2')) {
myFunction2();
}
});
});
答案 1 :(得分:1)
或者,您可以添加两个单独的事件并调用您的函数。它与其他答案类似,可能只取决于风格。
演示:http://jsfiddle.net/lucuma/wzEJc/
示例代码:
function myFunction1(el) {
el.addClass('mclass1');
};
function myFunction2(el) {
el.addClass('mclass2');
};
$(document).ready(function(){
$('.class1').keyup(function(){
myFunction1($(this));
});
$('.class2').keyup(function(){
myFunction1($(this));
myFunction2($(this));
});
});
答案 2 :(得分:1)
你绑定了很多事件处理程序,你可以让事件冒泡并稍后捕获它:
$('body').on('keyup', '.class1, .class2', myFunction1);
$('body').on('keyup', '.class2', myFunction2);