2016-09-12 5 views
0

Wenn ich auf das Wort Hello klicke, das die Klasse oldClass hat, ändert die jquery die Klasse in die Klasse newClass, die das Wort Hello blue färbt. Dies bedeutet, dass die Klasse geändert wurde. Warum reagiert jquery nicht auf das Klicken auf die Klasse newClass?jquery geänderte Klasse reagiert nicht

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script> 
    $(document).ready(function(){ 
     $(".oldClass").click(function(){ 
      $(".oldClass").attr("class","newClass"); 
     }); 
     $(".newClass").click(function(){ 
      $(".newClass").attr("class","oldClass"); 
     }); 
    }); 
    </script> 
    <style> 
    .oldClass {color:red;} 
    .newClass {color:blue;} 
    </style> 
</head> 
<body> 
    <p class="oldClass">Hello</p> 
</body> 

+0

Verwenden '.toggleClass()' [Demo] (https://jsfiddle.net/x9e06kmo/) –

+0

FYI: jQuery addClass und removeClass Funktionen implementiert https : //api.jquery.com/addclass/ –

Antwort

4

Delegate klicken Sie Ereignisse

$('body').on('click','.oldClass',function(){ 
    $(".oldClass").attr("class","newClass"); 
}); 
$('body').on('click','.newClass',function(){ 
    $(".newClass").attr("class","oldClass"); 
}); 

Bessere toggleClass verwenden

$('body').on('click','.oldClass,.newClass',function(){ 
     $(this).toggleClass('newClass oldClass'); 
    }); 
+2

madalin ivascu FÜR PRÄSIDENTEN !!! Du bist Mann Madalin Ivascu. Vielen Dank! – Kobbe

+0

Wir treffen uns wieder! ;) Ich werde das versuchen und ich werde Chakris Ratschlag mit toggleClass befolgen. – Kobbe

+0

Madalin Ivascu, ich sehe nicht wirklich, wie ich das in das einfügen soll, was ich versuche zu tun. Das obige Beispiel ist ein einfaches Beispiel. Was ich versuche, ist, neue Zeilen mit 4 Feldern (Vorname, Nachname, Benutzer, Pass) und einem "X" (Kreuz) .png anzuhängen. Wenn das "X" angeklickt wird, wird die Zeile gelöscht. Dies funktioniert gut, aber nicht mit neu erstellten angehängten Zeilen. Den Zeilen wird beim Erstellen eine ID zugewiesen, aber das Klicken auf "X" .png wird nicht in jQuery ausgelöst. Kannst du meinen Code oben kopieren, bearbeiten und wieder einfügen? – Kobbe

1

Bessere Nutzung toggleClass ('oldClass NewClass');

0

Weil newClass zum Zeitpunkt der Ereignisbindung nicht vorhanden ist. Sie müssen Ereignis anhängen, wenn Klasse Verwenden folgenden Code

$(document).ready(function(){  
    function bindOldClassClick(){ 
    $(".oldClass").click(function(){ 
      $(".oldClass").attr("class","newClass"); 
      bindNewClassClick(); 
    }); 
    } 
    function bindNewClassClick(){ 
     $(".newClass").click(function(){ 
      $(".newClass").attr("class","oldClass"); 
      bindOldClassClick(); 
     }); 
    } 
    bindOldClassClick(); 
}); 

Kontrolle dieses auf jsfiddle https://jsfiddle.net/9w0z95ru/

0

geändert wird man es so tun können. Diese Hoffnung wird dazu beitragen, Sie

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title></title> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
\t 
 
</head> 
 

 
<style> 
 
p{ 
 
\t cursor:pointer; 
 
} 
 

 
.newClass{ 
 
\t color: red; 
 
\t 
 
} 
 

 
.oldClass{ 
 
\t color: black; 
 
\t 
 
} 
 
</style> 
 

 
<body> 
 
\t 
 
<p class="oldClass">This is my paragraph - use me</p> 
 

 

 

 

 
</body> 
 

 
<script type="text/javascript"> 
 

 

 
// CHECK WHICH THE CLASS NAME AND CHANGE 
 
$("p").click(function(){ 
 
\t var theClassname = $(this).attr('class'); 
 

 
\t if(theClassname == "oldClass") 
 
\t { 
 
\t \t $(this).attr('class','newClass'); 
 
\t } 
 
\t else 
 
\t { 
 
\t \t $(this).attr('class','oldClass'); 
 
\t } 
 

 
}); 
 

 

 

 

 
</script> 
 
</html>

Verwandte Themen