jQuery одно и то же событие для нескольких элементов

Есть ли способ выполнить один и тот же код для разных элементов на странице?

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

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

вместо этого сделать что-то вроде:

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

Спасибо

Ответы на вопрос(9)

вы также можете сделать «поиск» для двух разных элементов, используя их классы. Например:

<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».

если предположить, что ваши элементы хранятся как переменные (что часто является хорошей идеей, если вы обращаетесь к ним несколько раз в теле функции):

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

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

Использует преимущества цепочки jQuery и позволяет использовать ссылки.

$('.myclass1, .myclass2, .myclass3') для нескольких селекторов. Кроме того, вам не нужны лямбда-функции для привязки существующей функции к событию click.

 Maurizio In denmark04 июл. 2013 г., 08:40
вам нужен пробел после запятых
Решение Вопроса
$('.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);
 Never Back Down06 июн. 2014 г., 07:50
Что, если бы class2 кэшировался следующим образом: var class2 = $ (". Class2")?
 Brett Weber22 мая 2013 г., 21:44
Чтобы помочь разработчикам помнить это, даже если он немного расширен с использованием большего количества классов psuedo, это тот же формат, что и при использовании селектора css при определении стилей
 Ben Sewards07 авг. 2014 г., 16:39
Обратите внимание, что это по-прежнему будет прикреплять события к существующим объектам jquery, даже если один из селекторов возвращает undefined.
 Taufik Nur Rahmanda23 мар. 2017 г., 03:05
может кто-нибудь объяснить, в чем реальная разница между$('.class1, .class2') а также$('.class1').add('.class2')? в каком случае мы должны использовать.add()?
 Eevee06 июн. 2014 г., 07:51
@Никогда не сдавайся.add() работает и с объектами jquery
$('.class1, .class2').click(some_function);

. Class1, пробел здесь.class2'), иначе он не будет работать

Я обычно пользуюсьon вместоclick, Это позволяет мне добавлять больше слушателей событий к определенной функции.

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

Надеюсь, это поможет!

 Obed Marquez Parlapiano26 янв. 2017 г., 09:53
год спустя: да, вы можете! @GauravOjha
 Gaurav Ojha04 янв. 2017 г., 07:23
Мне нравится этот способ лучше. Но можете ли вы нацелить один элемент по классу и один по идентификатору в одном объявлении? Например, $ (document) .on ("click touchend", ".class1, # id1, .class3", function () {// do stuff});
 Jonathan Lidbeck26 апр. 2017 г., 02:31
Этот метод - создание делегированного, а не прямого обработчика - также предлагает уникальное преимущество обработки событий, запускаемых соответствующими элементами, созданнымипосле регистрация обработчика. Видеть:api.jquery.com/on

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);
      }
  });

содержащий множество полей ввода, который должен обрабатываться одним и тем же событием. Так что я просто используюнаходить() чтобы получить все внутренние объекты, которые должны иметь событие

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

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

Если ваши объекты находятся на один уровень ниже по ссылкедети() вместонаходить() метод может быть использован.

Ваш ответ на вопрос