如何用jquery处理两个不相关的事件

How to handle two unrelated events with jquery

本文关键字:两个 不相关 事件 何用 jquery 处理      更新时间:2023-09-26

我想知道我是否可以同时触发这两个事件:

$("input[type=checkbox]").click(function(){
   if($(this).is(":checked"))
   {
       //Value of checkbox
       alert(this.value);
   }
});

$("input[type= 'text']").keyup(function(){
   alert(this.value);
});

我查看了.bind,但这似乎只适用于一个选定的元素(即$(p).bind("mouseout mouseenter).doSomething()) .

)。

我遇到的情况是,我有一个函数,需要在发生这些事情中的任何一个时触发。

Try

$("input[type=checkbox],input[type='text']").on('click keyup', function(){
   // code
});

有两种方法可以实现,如下所示:

  1. using "on" method:

    $(document).on('keyup click',"input[type=checkbox],input[type='text']", function(){
       // Do stuff here..
    })
    
  2. 事件后调用函数。

    $("input[type=checkbox]").click(doSomething);
    $("input[type= 'text']").keyup(doSomething);
    function doSomething() {
    }
    

如果您仍然需要额外的If,您可以使用:

$("input[type=checkbox]").click(function(){
   if($(this).is(":checked"))
   {
       //Value of checkbox
       alert(this.value);
       somethingHappened();
   }
});
$("input[type= 'text']").keyup(function(){
   alert(this.value);
   somethingHappened();
});
function somethingHappened() {
   // Do stuff
}

也许你只需要一个通用的函数?

$("input[type=checkbox]").click(function(){
   if($(this).is(":checked")) {
       special(this.value);
   }
});
$("input[type= 'text']").keyup(function(){
   special(this.value);
});
function special(val) {
   alert(val);
}

如果你真的想在整个页面的复选框/文本字段发生变化时调用一个函数,你可能想要这样的东西:

$('body').on('change', ':checkbox,:text', function () {

});

注意:checkbox:text选择器比input[type=checkbox]等要好得多。