3 Stimmen

JQuery: die nth-Position eines Objekts erhalten

Ich habe ein Div, das Kontrollkästchen enthält. Ich habe auch eine Funktion, die ein jQuery-Objektparameter akzeptiert. Es sieht so aus:

function analyze_checkbox(cb) { ... }

Angesichts dessen, gibt es einen unkomplizierten Weg, die Kindposition des cb Parameters zu kennen? Ich dachte an etwas in dieser Art:

cb.parent().index(cb)

Wie ist der richtige Weg, es zu tun?

Danke,

Erwin

3voto

Gabriele Petrioli Punkte 182294

Zitieren aus .index()

Wenn keine Argumente an die .index() Methode übergeben werden, ist der Rückgabewert eine Ganzzahl, die die Position des ersten Elements innerhalb des jQuery-Objekts im Vergleich zu seinen Geschwisterelementen anzeigt.

Also in Ihrem Fall sollte cb.index(); es tun

Beispiel unter http://www.jsfiddle.net/qQzte/

und vergessen Sie nicht, dass das Ergebnis auf 0 basiert

1voto

T.J. Crowder Punkte 948310

Wenn Ihre Kontrollkästchen wirklich Geschwister sind, dann ist Gaby's Antwort, die besagt, dass cb.index() es tun sollte, ganz korrekt. Seien Sie jedoch vorsichtig, dass Sie verstehen, was Ihnen index tatsächlich mitteilt. Zum Beispiel, mit diesem Markup:

    Eins
    Zwei
    Drei
    Vier

...wenn Ihr cb von (sagen wir) $('#thediv input[type=checkbox][name=three]') stammt, wird das Ergebnis von cb.index() 0 sein (Link zum Beispiel). Offensichtlich nicht das, was Sie wollen.

Sie können das auf ein paar Arten handhaben. Mit dem spezifischen obigen Beispiel könnten Sie einfach nachsehen, wo das Elternelement label relativ zu seinen Geschwistern war: cb.parent().index() (Link zum Beispiel). Je nach Ihrem Markup kann das jedoch kompliziert sein.

Es gibt einen Weg, der weniger anfällig für subtile Markup-Änderungen ist: Wählen Sie genau die Liste von Elementen aus, die Sie berücksichtigen möchten, und fragen Sie dann jQuery, wo cb innerhalb dieser Liste ist. Also mit dem obigen Markup könnten Sie das tun:

// Der Selektor wählt *genau* die Sache aus, die wir
// betrachten wollen, und dann sucht `index` nach `cb` innerhalb dieser Liste
var index = $('#thediv input[type=checkbox]').index(cb);

Link zum Beispiel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X