jQuery针对多个元素的相同点击事件

时间:2009-08-21 17:59:16

标签: jquery events

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

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

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

代替做:

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

由于

10 个答案:

答案 0 :(得分:787)

$('.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);

答案 1 :(得分:90)

我通常使用on代替click。它允许我向特定函数添加更多事件监听器。

$(document).on("click touchend", ".class1, .class2, .class3", function () {
     //do stuff
});

希望它有所帮助!

答案 2 :(得分:36)

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

请确保放置类似$('。class1,space here.class2')的空格,否则它将无效。

答案 3 :(得分:15)

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

答案 4 :(得分:9)

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

function disableMinHeight() {
    var $html = $("html");
    var $body = $("body");
    var $slideout = $("#slideout");

    $html.add($body).add($slideout).css("min-height", 0);
};

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

答案 5 :(得分:2)

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

jQuery(document).ready(function($) {

$('.class, .id').click(function() { 

//  Your code

    }

});

答案 6 :(得分:2)

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

var $class1 = $('.class1');
var $class2 = $('.class2');

$([$class1,$class2]).each(function() {
    $(this).on('click', function(e) {
        some_function();
    });
});

答案 7 :(得分:1)

我们也可以编写如下代码,我在这里使用了模糊事件。

$("#proprice, #proqty").blur(function(){
      var price=$("#proprice").val();
      var qty=$("#proqty").val();
      if(price != '' || qty != '')
      {
          $("#totalprice").val(qty*price);
      }
  });

答案 8 :(得分:0)

我有一个包含许多输入字段的对象的链接,这需要由同一个事件处理。所以我只需使用 find() 来获取需要拥有事件的所有内部对象

var form = $('<form></form>');
// ... apending several input fields

form.find('input').on('change', onInputChange);

如果您的对象位于链接的一个级别 children() ,则可以使用 find()方法。

答案 9 :(得分:0)

除了上面的优秀示例和答案,您还可以执行&#34;查找&#34;两个不同的元素使用他们的类。例如:

<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>

这应输出&#34; HelloWorld&#34;。