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

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

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

  1.  
    $('.class1').click(function() {
  2.  
    some_function();
  3.  
    });
  4.  
     
  5.  
    $('.class2').click(function() {
  6.  
    some_function();
  7.  
    });

而是做一些像:

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

谢谢


#1楼

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

要么:

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

这也适用于现有对象:

  1.  
    const $class1 = $('.class1');
  2.  
    const $class2 = $('.class2');
  3.  
    $class1.add($class2).on('click', some_function);

#2楼

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


#3楼

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

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

希望能帮助到你!


#4楼

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

  1.  
    function disableMinHeight() {
  2.  
    var $html = $("html");
  3.  
    var $body = $("body");
  4.  
    var $slideout = $("#slideout");
  5.  
     
  6.  
    $html.add($body).add($slideout).css("min-height", 0);
  7.  
    };

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


#5楼

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

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

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


#6楼

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

  1.  
    $("#proprice, #proqty").blur(function(){
  2.  
    var price=$("#proprice").val();
  3.  
    var qty=$("#proqty").val();
  4.  
    if(price != '' || qty != '')
  5.  
    {
  6.  
    $("#totalprice").val(qty*price);
  7.  
    }
  8.  
    });

#7楼

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

  1.  
    <div class="parent">
  2.  
    <div class="child1">Hello</div>
  3.  
    <div class="child2">World</div>
  4.  
    </div>
  5.  
     
  6.  
    <script>
  7.  
    var x = jQuery('.parent').find('.child1, .child2').text();
  8.  
    console.log(x);
  9.  
    </script>

这应输出“HelloWorld”。


#8楼

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

  1.  
    jQuery(document).ready(function($) {
  2.  
     
  3.  
    $('.class, .id').click(function() {
  4.  
     
  5.  
    // Your code
  6.  
     
  7.  
    }
  8.  
     
  9.  
    });

#9楼

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

  1.  
    var $class1 = $('.class1');
  2.  
    var $class2 = $('.class2');
  3.  
     
  4.  
    $([$class1,$class2]).each(function() {
  5.  
    $(this).on('click', function(e) {
  6.  
    some_function();
  7.  
    });
  8.  
    });

#10楼

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

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

posted @ 2021-09-29 11:46  前端白雪  阅读(845)  评论(0编辑  收藏  举报