Есть ли способ выполнить тот же код для разных элементов на странице?
$('.class1').click(function() {
some_function();
});
$('.class2').click(function() {
some_function();
});
вместо этого сделать что-то вроде:
$('.class1').$('.class2').click(function() {
some_function();
});
Спасибо
$('.class1, .class2').on('click', some_function);
Или:
$('.class1').add('.class2').on('click', some_function);
Обычно я использую on
вместо click
. Это позволяет мне добавлять больше слушателей событий к определенной функции.
$(document).on("click touchend", ".class1, .class2, .class3", function () {
//do stuff
});
Надеюсь, что это поможет!
$('.class1, .class2').click(some_function);
Убедитесь, что вы помещаете пробел, например $('. class1, space here.class2'), иначе он не будет работать
Просто используйте $('.myclass1, .myclass2, .myclass3')
для нескольких селекторов. Кроме того, вам не нужны лямбда-функции для привязки существующей функции к событию клика.
Другая альтернатива, предполагая, что ваши элементы хранятся как переменные (что часто является хорошей идеей, если вы обращаетесь к ним несколько раз в теле функции):
function disableMinHeight() {
var $html = $("html");
var $body = $("body");
var $slideout = $("#slideout");
$html.add($body).add($slideout).css("min-height", 0);
};
Использует преимущества цепочки jQuery и позволяет использовать ссылки.
Добавьте список классов, разделенных запятыми:
jQuery(document).ready(function($) {
$('.class, .id').click(function() {
// Your code
}
});
Мы также можем записать код следующим образом: я использовал здесь размытие.
$("#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".
У меня есть ссылка на объект, содержащий множество полей ввода, которые требуют обработки одним и тем же событием. Поэтому я просто использую find(), чтобы получить все внутренние объекты, которые должны иметь событие
var form = $('<form></form>');
// ... apending several input fields
form.find('input').on('change', onInputChange);
Если ваши объекты находятся на одном уровне вниз по ссылке children(), можно использовать метод find().