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

Kel*_*vin 414 jquery events

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

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

$('.class2').click(function() {
   some_function();
});
Run Code Online (Sandbox Code Playgroud)

而是做一些像:

$('.class1').$('.class2').click(function() {
   some_function();
});
Run Code Online (Sandbox Code Playgroud)

谢谢

Eev*_*vee 823

$('.class1, .class2').on('click', some_function);
Run Code Online (Sandbox Code Playgroud)

要么:

$('.class1').add('.class2').on('click', some_function);
Run Code Online (Sandbox Code Playgroud)

  • @NeverBackDown` .add()`也适用于jquery对象 (17认同)
  • 为了帮助开发人员记住这一点,即使使用更多的psuedo类进行更多扩展,它也与在定义样式时应用css选择器的格式相同 (9认同)
  • 如果class2缓存如此var class2 = $(".class2")怎么办? (7认同)
  • 请注意,即使选择器之一返回 undefined,这仍会将事件附加到存在的 jquery 对象。 (2认同)
  • 有人可以解释`$('.class1,.class2')`和`$('.class1')之间的真正区别.add('.class2')`?在什么情况下我们应该使用`.add()`? (2认同)

bzi*_*zin 95

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

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

希望能帮助到你!

  • 一年后:是的,你可以!@GauravOjha (3认同)
  • 这种技术——创建一个委托的,而不是直接的处理程序——还提供了处理由注册处理程序*之后*创建的匹配元素触发的事件的独特优势。见:http://api.jquery.com/on/ (3认同)

coo*_*guy 37

$('.class1, .class2').click(some_function);
Run Code Online (Sandbox Code Playgroud)

确保你放置一个像$('.class1,space here.class2')的空格,否则它不会工作


cod*_*gar 15

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

  • 你需要一个逗号之后的空格 (7认同)

rob*_*pim 9

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

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

    $html.add($body).add($slideout).css("min-height", 0);
};
Run Code Online (Sandbox Code Playgroud)

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


frz*_*bor 7

如果您有或想要将元素保留为变量(jQuery 对象),您还可以循环遍历它们:

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

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


小智 5

我们也可以像下面这样编码,我在这里使用了模糊事件。

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