2016-10-26 4 views
1

Ich arbeite mit jQuery. Ich habe eine JavaScript-Methode, die wie folgt auf zwei Selektor arbeitet -Holen Sie sich die tatsächliche ID von wo slector mehrere ID arbeitet

$('#from1, #form2').submit(function() { 
    .... 
    .... 

    //is there any way to know the actual id (that is - form1 or form2) 
    //for which the submit() method is called 
} 

Das ist eine ziemlich große Methode ist und zwei der Form (form1 und from2) teilen fast den gleichen Code, so dass ich nicht wollen, schreiben mehrere submit() Methode für jedes Formular separat. Also gibt es eine Möglichkeit, die tatsächliche id für die die submit Methode aufgerufen wird.

Antwort

1
$(this).attr('id') 

$(this) wird die form verweisen, das das submit Ereignis ausgelöst hat.

Dies ist die allgemeine Syntax in allen Ereignishandlern. this wird auf das Element zeigen, das ein Ereignis auslöst und $(this) wird es ein JQuery-Objekt, so dass Sie viele gebaut in JQuery Syntax auf sie verwenden können, genau wie, wie wir .attr('id')

3

Unter der Annahme, dass die <form> Elemente sind die this verwendet haben innerhalb der anonymen Methode, wie sie von Ihrem (sehr gekürzt) geschrieben Code aussehen sein, dann können Sie einfach:

$('#form1, #form2').submit(function(){ 
    let formID = this.id; 

    // or (expensively, redundantly): 
    // formID = $(this).prop('id'); 
    // or: 
    // formID = $(this).attr('id'); 
}); 

Wenn aber ein Kind-Element der <form> ist die this, dann sind Sie kann stattdessen verwenden:

Beachten Sie, dass ich im obigen Abschnitt korrigiert habe, was vermutlich ein Tippfehler im Selektor war, wurde in #form1 geändert.

Auch, wie in den Kommentaren richtig angemerkt, ist let eine relativ neue ES6-Alternative für die Deklaration von Variablen; Wenn Sie ältere Browser unterstützen müssen, müssen Sie sich stattdessen an var halten.

+0

Vergessen Sie nicht, dass "Let" relativ neu ist, wenn Sie ältere Browser unterstützen müssen. http://caniuse.com/#feat=let –

Verwandte Themen