2009-04-13 16 views
6

Ich brauche meine alte Frage reask, ich es wahrscheinlich um 1 Uhr morgens haben shouldnt gestellt: Pvon jquery Attributselektor gefunden Attribute nicht

Es scheint, dass einige Attribute nicht Attributselektor mit jQuerys gefunden werden:

$("*[some=value]"); 

Bis jetzt scheint es, dass ich Forms Aktionsattribut und Imgs src Attribut nicht verwenden kann. Gibt es eine Liste von Attributen, die nicht funktionieren, damit ich benutzerdefinierte Selektoren für sie schreiben kann?

Danke nochmal!


Edit: Niemand scheint zu glauben, dass einige Wähler nicht funktionieren wie erwartet. Schauen Sie sich dieses Beispiel: Auf this site (die Jquery 1.3 auf es für firebugging hat) ein Formular, das wie folgt aussieht:

<form style="display: inline;" method="get" action="list"> 

(seine rund um den ‚aktuellen Downloads suchen‘ Drop-Down). Wenn Sie Firebug öffnen und versuchen Sie diesen Selektor:

$("form[action=list]"); 

werden Sie nicht in der Lage sein, das Formular auszuwählen. Das Aktionsattribut ist nicht besonders. Das Gleiche gilt für die src des Logo-Bild auf dieser Seite:

<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/> 

Der Wähler, der nicht ist nicht funktioniert:

$("img[src=/p/aost/logo?logo_id=1238551994"); 

Sicher, kann ich tun Platzhalter entspricht, das ist nicht das, was ich bin nach .

+1

Bitte * nicht * reasask Ihre Fragen. Editieren Sie einfach Ihre alte. Das wird es tun, wenn Sie das wirklich nützlich finden. –

+1

Ich wusste das nicht - ich mache das in der Zukunft – mkoryak

+1

Das ist OK, mach dir keine Sorgen. Vielleicht möchten Sie die alte Frage bearbeiten, um mit dieser zu verlinken, wenn diese Frage Ihnen eine Lösung bietet, und dann die Leute bitten, dafür zu stimmen, dass die alte geschlossen wird. –

Antwort

11

Es gibt keine "Liste" von nicht unterstützten Attributen, da es nicht sein sollte; Dies ist ein Fehler in jQuery.

Hier sind die offenen Tickets dazu:

Anscheinend ist der gemeinsame Nenner zwischen den Fehler ist, dass jQuery die Selektor-String Sie angeben, vergleicht gegen die vollständige URL im Gegensatz zum eigentlichen Attribut action/src, wie es im HTML definiert ist. Dies erklärt, warum die Selektoren attributeEndsWith oder attributeContains in diesem Fall funktionieren.

Ich würde nur empfehlen, dem Formular/Bild eine Klasse/ID zu geben und es zu Ende zu bringen.

+0

Danke, das ist die Information, die ich gesucht habe – mkoryak

4

Es hängt alles davon ab, welche jQuery-Version Sie verwenden.

Vor 1.3, könnten Sie @ Notation:

$("*[@name=value]") 

Also vielleicht das Hinzufügen @ hilft.

Ansonsten sollten Sie den Attributwert genau genauso eingeben wie im Markup definiert - z. wenn Sie versuchen, ein Bild mit src="http://example.com/dog.jpg" zu finden, die dies nicht tun, weil es nicht funktioniert:

$("img[src=dog.jpg") 

wie es mit Bildern zu finden src gleich zu „dog.jpg“ wird versuchen, , nicht enthalten.

Wenn Sie nach Attributen suchen, die nur Teile davon definieren, empfehle ich Ihnen, die Seite jQuery API Selectors zu lesen. Zum Beispiel werden alle Bilder src enthalten „dog.jpg“ Jota zu bekommen, könnten Sie verwenden:

$("img[src*=dog.jpg]") 

Ebenso können Sie Elemente, deren Attribute beginnen oder enden mit bestimmten Werten/Strings finden.

+0

Ich habe meine jquery aktualisiert und jetzt funktioniert der Attributselektor (das zweite Beispiel) nicht mehr. Irgendwelche Gedanken? – Scott