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')的空格,否則它將無效