两个jquery函数同时运行

时间:2012-03-29 16:44:54

标签: jquery function click bind each

我正在运行两个jquery,我希望将它们组合在一起。 这是我正在尝试做的一个例子。

    ​$(function(){
    $('input').each(function(){
        if ($(this).is(':checked')) {
           $(this).after('this is checked');
        }
    });
    $('input').click(function(){
        if ($(this).is(':checked')) {
           $(this).after('this is checked');
        }
    });
});​

现在,两个函数都做同样的事情,一个执行检查是否有任何输入从后端检查,另一个只响应用户点击。

我在想是否可以将它们合并到这样的声明中,

$('input').bind('each click');

但是我注意到即使这样也不适用于每个人。 有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您无法绑定each方法,因为它不是事件。

将函数分配给变量,以便您可以重复使用它:

​$(function(){

  var markChecked = function() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
  };

  $('input').each(markChecked).click(markChecked);
});​

有时使用的另一种方法是触发每个元素的click事件以强制进行初始检查:

​$(function(){
  $('input').click(function() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
  }).click();
});​

这当然假设触发click事件没有任何副作用。如果您已经将另一个click事件处理程序绑定到任何元素,这将导致也调用该事件处理程序。

答案 1 :(得分:1)

只需命名函数..

function handler() {
    if ($(this).is(':checked')) {
       $(this).after('this is checked');
    }
}

然后在两种情况下使用它:

$(function(){
    $('input').each(handler);
    $('input').click(handler);
});​