keyup jquery上有多个类

时间:2012-06-13 23:26:07

标签: jquery class event-handling onkeyup

我想要在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();
        });

    });
});

3 个答案:

答案 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);