为一个事件分配多个类

我有一个点击事件,我想分配给更多的类。 原因是我在我的应用程序的不同地方使用这个事件,并且你点击的button在不同的地方有不同的样式。

我想要的是$('。tag''.tag2'),这当然不起作用。

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

方法#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"); });​ 

小提琴

如果有可能重用逻辑,我更喜欢单独的函数(方法#1)。

另请参见如何select具有多个类的元素? 用于处理同一项目上的多个类。

您可以使用jQuery一次select多个类,如下所示:

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

给第二个参数$()函数,作用域select器,使$('.tag', '.tag2')在类$('.tag', '.tag2')元素内寻找tag

就像这样:

 $('.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 } 
  $('.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); 

你有没有试过这个:

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