2011-01-05 14 views
3

Ich habe diesen HTML:JQuery jeweils und attr Funktionen

<input id="testme" test="something"/><label test="something2"></label> 

und diese js

$("[test]").each(alert($(this).attr("test"))); 

hier demoed:

jsfidde

Ich würde denken, die Warnung mir geben würde, "something" und dann "something2". Aber es tut nichts!

Was ist los?

Antwort

13

Sie alarmieren die falsche Sache. Die each gibt einfach die Sammlung/jQuery zurück. Sie müssten innerhalb jedes Callbacks eine Warnung ausgeben, um die Werte des benutzerdefinierten Attributs zu alarmieren. Ebenfalls. Bitte verwenden Sie das Präfix data-, wenn Sie [benutzerdefinierte Attribute] [1] für eine bessere Einhaltung von Standards zuweisen.

$(".classname").each(function(){ 
    alert($(this).attr("classname")); 
}); 
+0

haha. Es tut dir leid wegen dem geschundenen Beispiel. Die Warnung an der falschen Stelle war ein Tippfehler. Das Problem, wie Sie auch gezeigt haben, war, dass ich 'function() {' vermisste. Und ja, ich plane, 'Daten-' zu verwenden. Dies ist das erste Mal, dass ich 'Daten-' tatsächlich verwenden würde, also habe ich es entfernt, als es ein Problem gab zu denken, dass es das verursachte. Aber ich habe gerade den dummen Fehler gemacht, das 'function() {' Ding zu vergessen. Vielen Dank! – kralco626

1

.each() eine Funktion übernimmt, sollte es wie folgt statt aussehen:

$("[test]").each(function() { 
    alert($(this).attr("test")); 
}); 

You can test it out here.