Подтвердить что ты не робот

Назначение нескольких классов для одного события

У меня есть событие click, которое я хочу назначить больше, чем класс. Причина этого в том, что я использую это событие в разных местах моего приложения, а кнопки, которые вы нажимаете, имеют разные стили в разных местах.

Я хочу что-то вроде $('. tag' '.tag2'), который, конечно, не работает.

    $('.tag').click(function (){
        if ($(this).hasClass('clickedTag')){
            // code here
        }

        else {
             // and here
        }
    });
4b9b3361

Ответ 1

Подход № 1

function doSomething(){
    if ($(this).hasClass('clickedTag')){
        // code here
    }
    else {
         // and here
    }
}

$('.tag1').click(doSomething);
$('.tag2').click(doSomething);

// or, simplifying further
$(".tag1, .tag2").click(doSomething);

Подход № 2

Это также будет работать:

​$(".tag1, .tag2").click(function(){
   alert("clicked");    
});​

Fiddle

Я предпочитаю отдельную функцию (подход # 1), если есть вероятность, что логика будет повторно использована.

См. также Как выбрать элемент с несколькими классами? для обработки нескольких классов в одном и том же элементе.

Ответ 2

Вы можете сразу выбрать несколько классов с помощью jQuery следующим образом:

$('.tag, .tag2').click(function() {
    var $this = $(this);
    if ($this.hasClass('tag')) {
        // do stuff
    } else {
        // do other stuff
    }
});

Предоставление второго параметра функции $(), позволяет селектору, поэтому $('.tag', '.tag2') ищет tag внутри элементов с классом tag2.

Ответ 3

Это так:

$('.tag.clickedTag').click(function (){ 
 // this will catch with two classes
}

$('.tag.clickedTag.otherclass').click(function (){ 
 // this will catch with three classes
}

$('.tag:not(.clickedTag)').click(function (){ 
 // this will catch tag without clickedTag
}

Ответ 4

    $('.tag1, .tag2').on('click', function() {

      if ($(this).hasClass('clickedTag')){
         // code here
      } else {
         // and here
      }

   });

или

function dothing() {
   if ($(this).hasClass('clickedTag')){
        // code here
    } else {
        // and here
   }
}

$('.tag1, .tag2').on('click', dothing);

или

 $('[class^=tag]').on('click', dothing);

Ответ 5

Вы пробовали это:

 function doSomething() {
     if ($(this).hasClass('clickedTag')){
         // code here
     } else {
         // and here
     }
 }

 $('.tag1, .tag2').click(doSomething);

Ответ 6

    $('[class*="tag"]').live('click', function() {
      if ($(this).hasClass('clickedTag')){
         // code here
      } else {
         // and here
      }
   });