2009-06-09 11 views
2

Etwas ist sehr umständlich über meine Situation ... Ich habe so etwas wie dies:jQuery Selektor Fehler? zusammengesetzt Wähler vs. einfachen Selektor & finden()

<div id="selector"> 
    <input type='radio' /> 
    <input type='radio' /> 
    <input type='radio' /> 
</div> 

wenn ich $("#selector input[type=radio]") alle drei Elemente verwenden gefunden werden, aber wenn ich $("#selector").find("input[type=radio]") oder sogar find("input") nur der erste gefunden wird.

Ist das ein Fehler in jQuery? Benütze ich find() nicht richtig?

Erläuterung: Ich möchte find() verwenden, um alle Eingaben zu erhalten, aber alles, was ich versuche, findet nur die erste.

edit: ich bin mit jquery 1.3.2

+0

Im Gegensatz zu vielen anderen JavaScript-Frameworks ruft jQuery keine Elemente nach ID ab, wenn Sie eine Suche wie $ ('input') durchführen. Sie müssen die ID mit #: $ ('# selector') voranstellen – Blixt

+0

Ich reparierte das Beispiel ... es war ein Tippfehler. – Dan

+0

. Welcher Browser? –

Antwort

0

Versuchen

$ ("# Selektor") finden ("input [type = radio]")

+0

das ist, was ich benutze, tut mir leid für das schlechte Beispiel :) – Dan

2

Was Sie wirklich wollen. ist:

$("#selector > :radio") 

Was, warum Sie nur eine bekommen, würde ich benötigen Sie den aktuellen Code zu sehen, weil() beschränkt sich nicht auf einen finden laufen gelassen werden und wird alle Spiele finden, so kann es sein, Wie Sie es danach verwenden, ist das Problem .

+0

Ich versuchte dies auch in der Firebug-Konsole, und die beiden Befehle geben unterschiedliche Ergebnisse zurück: Der Compound-Selektor gibt alle zurück, der find() gibt nur den ersten zurück. – Dan

-3

$ ("# Selektor"). Kinder ("input [@ type = radio]")

+2

Das Attribut @ zum Auswählen wird von jQuery –

1

Die beiden Codefragmente sollten das gleiche Ergebnis zurück.

Sie sagen, dass wenn Sie den folgenden Code ausführen, zeigt die erste Warnung "3" und die zweite "1"?

var a = $("#selector input[type=radio]"); 
var b = $("#selector").find("input[type=radio]"); 

alert(a.length); 
alert(b.length); 

Können Sie bitte überprüfen?

+0

nicht mehr korrekt unterstützt. deshalb ist es so bizzarisch. – Dan

0

See here

Alle drei kehrt das gleiche Ergebnis!

$(function() { 
    console.log($("#selector input[type=radio]"));   // 3 
    console.log($("#selector").find("input[type=radio]")); // 3 
    console.log($("#selector").find("input"));    // 3 
});