代码之家  ›  专栏  ›  技术社区  ›  Kelvin

多个元素的jQuery相同单击事件

  •  382
  • Kelvin  · 技术社区  · 15 年前

    有没有办法为页面上的不同元素执行相同的代码?

    $('.class1').click(function() {
       some_function();
    });
    
    $('.class2').click(function() {
       some_function();
    });
    

    相反,您可以执行以下操作:

    $('.class1').$('.class2').click(function() {
       some_function();
    });
    

    谢谢

    9 回复  |  直到 9 年前
        1
  •  939
  •   David Harkness    6 年前
    $('.class1, .class2').on('click', some_function);
    

    或:

    $('.class1').add('.class2').on('click', some_function);
    

    这也适用于现有对象:

    const $class1 = $('.class1');
    const $class2 = $('.class2');
    $class1.add($class2).on('click', some_function);
    
        2
  •  122
  •   The Codesee xboz    4 年前

    on 而不是 click . 它允许我向特定函数添加更多事件侦听器。

    $(document).on("click touchend", ".class1, .class2, .class3", function () {
         //do stuff
    });
    
        3
  •  42
  •   adinas    6 年前
    $('.class1, .class2').click(some_function);
    

    请确保放置一个类似$('.class1,space here.class2')的空格,否则它将不起作用。

        4
  •  19
  •   Dency G B    9 年前

    简单使用 $('.myclass1, .myclass2, .myclass3') 用于多个选择器。此外,不需要lambda函数将现有函数绑定到click事件。

        5
  •  11
  •   pim    10 年前

    另一种选择是,假设元素存储为变量(如果在函数体中多次访问它们,这通常是个好主意):

    function disableMinHeight() {
        var $html = $("html");
        var $body = $("body");
        var $slideout = $("#slideout");
    
        $html.add($body).add($slideout).css("min-height", 0);
    };
    

    利用jQuery链接并允许您使用引用。

        6
  •  7
  •   frzsombor Arnav Aggarwal    6 年前

    如果您拥有或希望将元素保留为变量(jQuery对象),还可以在其上循环:

    var $class1 = $('.class1');
    var $class2 = $('.class2');
    
    $([$class1,$class2]).each(function() {
        $(this).on('click', function(e) {
            some_function();
        });
    });
    
        7
  •  4
  •   Nitin Pawar    8 年前

    $("#proprice, #proqty").blur(function(){
          var price=$("#proprice").val();
          var qty=$("#proqty").val();
          if(price != '' || qty != '')
          {
              $("#totalprice").val(qty*price);
          }
      });
    
        8
  •  3
  •   Dev    7 年前

    添加逗号分隔的类列表,如下所示:

    jQuery(document).ready(function($) {
    
    $('.class, .id').click(function() { 
    
    //  Your code
    
        }
    
    });
    
        9
  •  1
  •   Andrii Bogachenko    8 年前

    我有一个指向包含许多输入字段的对象的链接,这些字段需要由同一事件处理。所以我就用 查找()

    var form = $('<form></form>');
    // ... apending several input fields
    
    form.find('input').on('change', onInputChange);
    

    如果您的对象位于链接下方一层 儿童() 相反 查找() 方法可以使用。

        10
  •  1
  •   Arkhaine    7 年前

    除了上面的优秀示例和答案之外,您还可以使用它们的类对两个不同的元素进行“查找”。例如:

    <div class="parent">
    <div class="child1">Hello</div>
    <div class="child2">World</div>
    </div>
    
    <script>
    var x = jQuery('.parent').find('.child1, .child2').text();
    console.log(x);
    </script>
    

    这应该输出“HelloWorld”。