Ich habe attr () fälschlicherweise in meinem ersten Beitrag verwendet. Ich meinte data (), aber es gibt für mich 'undefined' zurück.
userBG
6
Ich bin gerade darauf gestoßen und frage mich, ob die erste Methode aus Leistungsgründen oder aus einem anderen Grund bevorzugt wird. @ JordanBrown
Clarkey
1
@Clarkey Ich vermute, dass data () schneller ist als attr (), da attr () zusätzliche Arbeit leisten muss, um herauszufinden, um welche Art von Attribut es sich handelt. Nur eine Vermutung.
Ihr Änderungsabonnent abonniert das Änderungsereignis der Auswahl, sodass der thisParameter das Auswahlelement ist. Sie müssen das ausgewählte Kind finden, von dem Sie die Daten-ID erhalten möchten.
Bitte bemühen Sie sich immer, Ihren veröffentlichten Codeblock mit Erklärungen und / oder Verweisen (auch wenn die Lösung einfach / "selbsterklärend" ist) auf StackOverflow zu unterstützen, da nicht jeder mit der Syntax / dem Verhalten / der Leistung einer bestimmten Sprache vertraut ist.
Bitte bemühen Sie sich immer, Ihren veröffentlichten Codeblock mit Erklärungen und / oder Verweisen (auch wenn die Lösung einfach / "selbsterklärend" ist) auf StackOverflow zu unterstützen, da nicht jeder mit der Syntax / dem Verhalten / der Leistung einer bestimmten Sprache vertraut ist.
Mickmackusa
5
Sie können die contextSyntax mit thisoder verwenden $(this). Dies ist der gleiche Effekt wie find().
$('select').change(function(){
console.log('Clicked option value => '+ $(this).val());<!--undefined console.log('$(this) without explicit :select => '+ $(this).data('id'));--><!-- error console.log('this without explicit :select => '+this.data('id'));-->
console.log(':select & $(this) => '+ $(':selected', $(this)).data('id'));
console.log(':select & this => '+ $(':selected',this).data('id'));
console.log('option:select & this => '+ $('option:selected',this).data('id'));
console.log('$(this) & find => '+ $(this).find(':selected').data('id'));});
Aus Gründen der Mikrooptimierung können Sie sich entscheiden find(). Wenn Sie eher ein Code-Golfer sind, ist die Kontextsyntax kürzer. Im Grunde kommt es auf den Codierungsstil an.
Bitte bemühen Sie sich immer, Ihren veröffentlichten Codeblock mit Erklärungen und / oder Verweisen (auch wenn die Lösung einfach / "selbsterklärend" ist) auf StackOverflow zu unterstützen, da nicht jeder mit der Syntax / dem Verhalten / der Leistung einer bestimmten Sprache vertraut ist.
Mickmackusa
Das OP hat kein idAttribut für das Auswahlelement (und benötigt aufgrund des Nutzens von kein Attribut this).
Bitte bemühen Sie sich immer, Ihren veröffentlichten Codeblock mit Erklärungen und / oder Verweisen (auch wenn die Lösung einfach / "selbsterklärend" ist) auf StackOverflow zu unterstützen, da nicht jeder mit der Syntax / dem Verhalten / der Leistung einer bestimmten Sprache vertraut ist.
Antworten:
Sie müssen die ausgewählte Option finden:
oder
obwohl die erste Methode bevorzugt ist.
quelle
Versuche Folgendes:
Ihr Änderungsabonnent abonniert das Änderungsereignis der Auswahl, sodass der
this
Parameter das Auswahlelement ist. Sie müssen das ausgewählte Kind finden, von dem Sie die Daten-ID erhalten möchten.quelle
find()
ist viel schneller alschildren()
selbst in Fällen wie diesem, in denen wir nur eine Baumtiefe von 2 haben.quelle
Vanille-Javascript:
quelle
Sie können die
context
Syntax mitthis
oder verwenden$(this)
. Dies ist der gleiche Effekt wiefind()
.Aus Gründen der Mikrooptimierung können Sie sich entscheiden
find()
. Wenn Sie eher ein Code-Golfer sind, ist die Kontextsyntax kürzer. Im Grunde kommt es auf den Codierungsstil an.Hier ist ein relevanter Leistungsvergleich .
quelle
quelle
id
Attribut für das Auswahlelement (und benötigt aufgrund des Nutzens von kein Attributthis
).das funktioniert bei mir
und das Skript
quelle