jQuery用于多个元素的相同单击事件

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

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


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

相反,你可以这样做:

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

谢谢

526773 次浏览
$('.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);

对于多个选择器,只需使用$('.myclass1, .myclass2, .myclass3')。同样,你也不需要lambda函数来将现有的函数绑定到click事件。

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

确保你输入了一个像$('的空格。Class1,空格。class2')否则不行。

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

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

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

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


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

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

我有一个指向包含许多输入字段的对象的链接,这需要由相同的事件处理。因此,我简单地使用< em > find () < / em >来获取所有需要具有事件的内部对象

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


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

如果你的对象在链接的下一层,则可以使用find ()方法。

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

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

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

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

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

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


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


//  Your code


}


});

如果你有或想保持你的元素作为变量(jQuery对象),你也可以循环它们:

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


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