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')的空格,否则它将无效


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM