Übergeben Zeichenfolge als parameter in jQuery-Funktion
Ich bin eine seltsame jQuery-Problem. Ich Schreibe eine Funktion akzeptiert eine Zeichenfolge als parameter übergeben, und dann bin Fütterung, die Zeichenfolge in ein jQuery-Selektor.
Hier ist die Funktion:
function myFunction(specialfields) {
if(!$(specialfields).is(':focus')) {
alert('thats not in focus');
}
}
Aber ich bekomme immer diese Fehlermeldung:
Uncaught Syntax error, unrecognized expression: focus
Was allerdings merkwürdig ist, dass die '.ist(':focus') " funktioniert in anderen Bereichen, wenn Sie es nicht akzeptieren einen parameter, und wenn ich diese übergeben:
$(specialfields)
Es liest als gültiges Objekt. Ich bin versucht, übergeben Sie eine Zeichenfolge wie diese:
#id1, #id2
Zusätzlich, das funktioniert:
$(specialfields).val()
Jemand eine Idee, was Los hier?
- BTW, bist du mit
selector
als argument ein name, aber vorbeispecialfields
zu jQuery. - Entschuldigung, Tippfehler in meinem Beispiel!
- nur ein
console.log
und es herausfinden - Was genau ist der Wert der "specialfields" variable?
- Ich glaube, ich fand die Frage -- ich war Sie zwei Variablen als specialfields "#id1, #id2". Das mag sein, brechen Sie die Fokus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, ich glaube, das Problem war die Tatsache, ich war die übergabe von zwei Parametern in "specialfields", die brach die ':focus' - Selektor ist offensichtlich, dass Sie nicht zwei Felder gleichzeitig scharf.
Es kann behoben werden, indem die Weitergabe nur eine einzelne Auswahl in der Funktion.
Abschluss
Ihre Weise arbeiteten Sie alle zusammen und arbeitet schneller als mein waste-of-time-alternative.
Detail
Definierte ich die Funktion ein wenig anders, und ich ersetzt den
alert()
Funktionalität durch die Weitergabe der Antwort auf eine<p id="response">
.HTML:
JavaScript:
Sehen http://jsfiddle.net/jhfrench/UufWD/ für ein Beispiel.
Werden Sie feststellen bewerte ich die übergebenen parameter für
:focus
mitif ($(specialfields + ':focus').length === 0)
.Ich dachte, das wäre schneller, aber das ist nicht der Fall.
Auf der plus-Seite, diese Methode ist in der Lage mehrere Selektor-Argumente (wie
#id1, #id2')
; siehe http://jsfiddle.net/jhfrench/UufWD/19/). Aber Ihre ursprüngliche Bewertung derif(!$(specialfields).is(':focus'))
ist besser.Nun sehen http://jsfiddle.net/jhfrench/UufWD/14/ für ein Beispiel für deinen Ansatz.
Gibt es keine native Lösung, aber ja, es gibt eine elegantere Art und Weise Sie es tun können:
Du bist die Definition eines neuen Tags. Siehe Plugins/Authoring. Dann können Sie tun:
Quelle--
Ist es ein 'Fokus' in JavaScript (oder jQuery)?
:focus
.