Weiß jemand, wie man mit jQuery ein Element im DOM nach ID auswählt, wenn diese ID ein Leerzeichen hat?
Zum Beispiel wäre die ID meines Artikels
<div id="content Module">Stuff</div>
Wie würde ich dies mit jQuery auswählen?
Wenn ich es nur tue
$("#content Module").whatever()
jQuery wird versuchen, ein Element zu finden, das sowohl die ID des Inhalts als auch die ID des Moduls enthält. Dies ist nicht das, wonach ich suche.
Ich sollte hinzufügen, dass ich mit einer alten Codebasis arbeite, in der diese beiden Wort-IDs häufig verwendet werden. Daher wäre es schlecht, alle IDs durchzugehen und zu ändern.
Antworten:
Verwenden Sie eine Attributauswahl.
Oder geben Sie besser auch das Tag an:
Beachten Sie, dass im Gegensatz zu $ ('# id') mehrere Elemente zurückgegeben werden, wenn Ihre Seite mehrere Elemente mit derselben ID enthält.
quelle
Verwenden Sie keine Leerzeichen. Der Grund dafür ist einfach. Das Leerzeichen ist für das ID-Attribut nicht gültig.
Aber wenn Sie sich nicht für Standards interessieren, versuchen Sie es
$("[id='content Module']")
Ähnlicher Thread> Was sind gültige Werte für das ID-Attribut in HTML?
Bearbeiten: Wie sich die ID zwischen HTML 4.01 und HTML5 unterscheidet
Verknüpfung: http://mathiasbynens.be/notes/html5-id-class
quelle
Nur für den Fall, dass jemand neugierig ist, habe ich festgestellt, dass es funktionieren wird, dem Raum zu entkommen. Dies ist besonders nützlich, wenn Sie keine Kontrolle über das Ziel-DOM haben (z. B. aus einem Benutzer-Skript heraus):
Beachten Sie den erforderlichen doppelten Backslash.
quelle
Die von Chris vorgeschlagene Methode kann wahrscheinlich an die Arbeit mit jQuery-Funktionen angepasst werden.
quelle
Eine Idee zum Ausprobieren:
Das Semikolon kann einen Javascript-Fehler verursachen. Ich empfehle auch, die ID so zu ändern, dass keine Leerzeichen vorhanden sind.
Probiere auch
document.getElementByID("content Module")
quelle
$(document.getElementByID("content Module"))
Sie Ihnen kein Abfrageobjekt geben?Das hat bei mir funktioniert.
quelle
Es ist zwar technisch ungültig, ein Leerzeichen in einem ID-Attributwert in HTML zu haben , können Sie es tatsächlich mit jQuery auswählen.
Siehe http://mothereffingcssescapes.com/#content%20module :
jQuery verwendet eine Selectors-API-ähnliche Syntax, sodass Sie
$('#content\\ module');
das Element mit auswählen könnenid="content module"
.Um das Element in CSS als Ziel festzulegen, können Sie es folgendermaßen umgehen:
quelle
Dies kann funktionieren, wenn das Element den genauen Wert für die ID haben soll
Wenn Sie jedoch überprüfen möchten, ob das Element nur eines davon (genau wie die Klasse) mit oder ohne andere IDs hat
Dadurch wird das Element ausgewählt, wenn es
id="content"
oderid="content Module"
oder hatid="content Module other_ids"
quelle
Ich habe für meinen Fall festgestellt, dass Escape nicht funktioniert, da Leerzeichen durch% 20 ersetzt werden. Ich habe stattdessen Ersetzen verwendet, z. B. um das h1 der Seite durch den Text eines Listenelements zu ersetzen. Wenn das Menü enthält:
quelle
Ich hatte Probleme mit Element-IDs, die Kommas und / oder Leerzeichen in jQuery enthielten, also tat ich dies und es funktionierte wie ein Zauber:
var ele = $(document.getElementById('last, first'));
Dies hat Leerzeichen und funktioniert nicht:
var ele = $('#last, first');
Dies hat Komma und funktioniert nicht:
var ele = $('#last,first');
quelle
Escapezeichen für verschiedene Zeichen auf dem Selektor (zusammen mit Leerzeichen) .
quelle