有没有办法为页面上的不同元素执行相同的代码?
$('.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')的空格,否则它将无效。