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

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

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

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

而是做一些像:

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

谢谢


#1楼

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

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


#3楼

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

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

希望能帮助到你!


#4楼

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

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

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

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


#5楼

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

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

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

如果你的对象是链接的一级,可以使用children()而不是find()方法。


#6楼

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

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

#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”。


#8楼

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

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

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

//  Your code

    }

});

#9楼

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

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

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

#10楼

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

确保你放置一个像$('。class1,space here.class2')的空格,否则它将无效。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值