2017-01-18 2 views
0

Lets sagen, ich habe einen Anker-Tag mit zwei verschiedenen Klassen in jedem TagPrüfung, die Klasse wird in jquery geklickt

<a class="class1 class2">Click me</a> 
<a class="class1 class3">Click me</a> 

Ich mag wissen, was, wenn ich class1 Anker klicken, muss es class2 oder class3

ich habe versucht, diese aber es wird nicht ausgeführt

$(document).ready(function() 
{ 
    $('.class1').click(function() 
    { 
     if($(this).has('class2')) 
     { 
      alert("class2 tag"); 
     } 
     else 
     { 
      alert("class3 tag"); 
     } 
    }); 
}); 
+3

versuchen $ (this) .hasClass stattdessen –

+0

Ja, hasClass() ist, was Sie brauchen ... – Paul

Antwort

3

Sie sollten jQuerys hasClass Methode, und nichtverwenden:

$(document).ready(function() { 
 
    $('.class1').click(function() { 
 
    if ($(this).hasClass('class2')) { 
 
     alert("class2 tag"); 
 
    } else { 
 
     alert("class3 tag"); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a class="class1 class2">Click me</a> 
 
<a class="class1 class3">Click me</a>

Weil du nur für einen Klassenname suchen, ist hasClass ausreichend.

Der Grund has sollte wahrscheinlich hier vermieden werden, weil has eine Menge übereinstimmender Elemente reduzieren soll. Hier ist die Methode Beschreibung der jquery docs:

.has()

Reduzieren der Gruppe angepaßter Elemente, die denen, die einen Abkömmling haben, der den Wähler oder DOM-Element entspricht.

1

Verwendung hasClass() Verfahren um ein Element zu prüfen, hat die bereitgestellte Klasse oder is() Methode verwenden, um das Element gegen das Element bereitgestellt, jQuery Objekt oder Selektor zu überprüfen.

if($(this).hasClass('class2')) 
// or 
if($(this).is('.class2')) 
Verwandte Themen