Frage

Ich muss reask meine alte Frage, ich wahrscheinlich shouldnt haben sie um 1 Uhr morgens gestellt: P

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

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

Bisher scheint es, dass ich Aktion des Formulars Attribut kann nicht, und src-Attribut des img. Gibt es eine Liste irgendwo von Attributen, die nicht funktionieren, so kann ich benutzerdefinierte Selektoren für sie schreiben?

Danke nochmal!


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

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

(seine rund um das Dropdown 'aktuellen Downloads suchen'). Wenn Sie Firebug öffnen und diesen Selektor versuchen:

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

Sie nicht in der Lage sein, die Form zu wählen. Es ist nichts Besonderes über das action-Attribut. Das Gleiche gilt für die src des Logo-Bild auf dieser Seite:

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

Der Selektor was nicht funktioniert:

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

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

War es hilfreich?

Lösung

Es gibt keine „Liste“ der nicht unterstützten Attribute, weil es nicht sein sollte; dies ist ein Bug in jQuery.

Hier sind die offenen Tickets folgt aus:

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

Ich würde nur empfehlen, die Form / Bild eine Klasse / ID geben und über mit zu bekommen.

Andere Tipps

Es hängt alles von der jQuery-Version Sie verwenden.

Vor 1.3, könnten Sie @ Notation verwenden:

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

Also vielleicht das Hinzufügen @ hilft.

Other than that, sollten Sie den Attributwert eingeben genau das gleiche wie es im Markup definiert ist - z.B. 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 wird versuchen, Bilder zu finden, mit src gleich auf "dog.jpg", enthält es nicht.

Wenn Sie Attribute suchen, definieren nur Teile davon wollen, würde ich vorschlagen, die jQuery API Selektoren Seite. Zum Beispiel bekommen alle Bilder Whit src mit "dog.jpg", könnten Sie verwenden:

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top