【问题标题】:two jquery functions at the same time同时有两个jquery函数
【发布时间】:2012-04-13 08:34:01
【问题描述】:

我有两个运行的 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');

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

谢谢!

【问题讨论】:

    标签: jquery function click bind each


    【解决方案1】:

    只需命名函数..

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

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

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

    【讨论】:

      【解决方案2】:

      你不能绑定each方法,因为它不是一个事件。

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-31
        相关资源
        最近更新 更多