Frage

kann mir jemand erklären, warum diese jQuery-Selektor nicht funktioniert, ich habe, um das Problem gearbeitet, aber für meine geistige Gesundheit wissen möchte, was ich falsch verstanden

ich ein Formular mit mehreren Textbereiche, die jeweils bekommt eine ID wie f_id_DSC000001.JPG wo der letzte Teil eine Fotografie Zahl ist, hat das Textfeld ein onblur Ereignis, das Post verwendet, um seine Inhalte zu senden und eine Datenbanktabelle zu aktualisieren, eine JSON-Antwort kommt zurück. All das funktioniert gut, ich die Ergebnisse mit Firebug sehen kann, gibt es keine Probleme geben.

Der DSC000001.JPG Teil der ID wird in der json Antwort als Bestätigung zurückgeleitet, dann will ich die Klasse des TextArea- ändern den Zustand der Aktualisierung zu zeigen.

Wenn ich dies tun

var textarea_selector="#f_id_"+res_data.image_filename;
$(textarea_selector).removeClass("kw-class");
$(textarea_selector).addClass("update-failed");

die Klasse ändert sich nicht, aber wenn ich das

$("textarea[id*='"+res_data.image_filename+"']").removeClass("kw-class");
                  $("textarea[id*='"+res_data.image_filename+"']").addClass("update-done");

es funktioniert gut.

Ich bin kein Javascript / jquery Experte :-( so eine grundlegende Erklärung, was würde ich wirklich zu schätzen.

War es hilfreich?

Lösung

Sie haben einen Punkt in Ihrer ID. Und das als Klassenauswahl interpretiert hat:

#f_id_DSC000001.JPG
\_____________/\__/
 id             class

Aber dies sollte funktionieren:

var textarea_element = document.getElementById("f_id_"+res_data.image_filename);
$(textarea_element).removeClass("kw-class").addClass("update-failed");

Oder diese:

var textarea_id = "f_id_"+res_data.image_filename;
$("[id="+textarea_id+"]").removeClass("kw-class").addClass("update-failed");

Andere Tipps

Sie haben über entkommen seltsame Zeichen in Ihrem IDs vorsichtig sein. Siehe jQuery FAQ mehr.

es sieht aus wie Sie anrufen, zwei verschiedene IDs. warum sind Anfügen Sie „#f_id“ im ersten Beispiel? Sie sollten auf die ID eines Elements der Lage sein, anhängen ‚#‘ nur und wählen Sie es einfach gut.

Versuchen:

var textarea = $("textarea[id*='"+res_data.image_filename+"']");
textarea.removeClass("kw-class");
textarea.addClass("update-failed");

Sie konstruieren nicht die Wähler das gleiche wie das Beispiel in Ihrem Beitrag, weshalb es versagt. Diese Lösung, die Sie nur einmal wählen zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top