Czy ktoś wie, jak wybrać element w DOM według identyfikatora z jQuery, gdy ten identyfikator ma spację?
Na przykład identyfikator mojego przedmiotu to
<div id="content Module">Stuff</div>
Jak mam to wybrać w jQuery?
Jeśli po prostu to zrobię
$("#content Module").whatever()
jQuery spróbuje znaleźć element z zarówno identyfikatorem zawartości, jak i identyfikatorem modułu, co nie jest tym, czego szukam.
Powinienem dodać, że pracuję ze starą bazą kodu, w której te dwa identyfikatory słów są szeroko używane, więc przeglądanie i zmienianie wszystkich identyfikatorów byłoby złe.
Odpowiedzi:
Użyj selektora atrybutu.
Lub, lepiej, określ również tag:
Zwróć uwagę, że w przeciwieństwie do $ ('# id'), to zwróci wiele elementów, jeśli masz wiele elementów o tym samym identyfikatorze na swojej stronie.
źródło
Nie używaj spacji, przyczyna jest prosta, znak spacji nie jest prawidłowy dla atrybutu ID.
Ale jeśli nie dbasz o standardy, spróbuj
$("[id='content Module']")
Podobny wątek> Jakie są prawidłowe wartości atrybutu id w HTML?
Edycja: jak identyfikator różni się między HTML 4.01 a HTML5
Link: http://mathiasbynens.be/notes/html5-id-class
źródło
Na wypadek gdyby ktoś był ciekawy, odkryłem, że ucieczka z kosmosu będzie działać. Jest to szczególnie przydatne, gdy nie masz kontroli nad docelowym DOM (np. Z poziomu skryptu użytkownika):
Zwróć uwagę na podwójny lewy ukośnik, który jest wymagany.
źródło
Metoda sugerowana przez Chrisa może być prawdopodobnie przystosowana do pracy z funkcjami jQuery.
źródło
Pomysł do wypróbowania:
Średnik może spowodować błąd javascript. Zalecam również zmianę ID, aby nie było spacji.
Spróbuj też
document.getElementByID("content Module")
źródło
$(document.getElementByID("content Module"))
dałby ci obiektu jquery?To zadziałało dla mnie.
źródło
Chociaż z technicznego punktu widzenia spacja w wartości atrybutu identyfikatora w HTML jest niepoprawna , w rzeczywistości można ją wybrać za pomocą jQuery.
Zobacz http://mothereffingcssescapes.com/#content%20module :
jQuery używa składni podobnej do interfejsu API Selectors, więc możesz użyć
$('#content\\ module');
do wybrania elementu za pomocąid="content module"
.Aby wskazać element w CSS, możesz uniknąć tego w następujący sposób:
źródło
może to zadziałać, jeśli chcesz, aby element miał dokładną wartość identyfikatora
ale jeśli chcesz sprawdzić, czy element ma tylko jeden z nich (tak jak class) z innymi identyfikatorami lub bez nich
spowoduje to wybranie elementu, jeśli ma
id="content"
lubid="content Module"
lubid="content Module other_ids"
źródło
W moim przypadku stwierdziłem, że ucieczka nie zadziałała, ponieważ zastępuje spacje% 20. Zamiast tego użyłem zamiany, aby np. Zamienić h1 strony na tekst elementu listy. Jeśli menu zawiera:
źródło
Miałem problemy z identyfikatorami elementów zawierającymi przecinki i / lub spacje w jQuery, więc zrobiłem to i zadziałało to cudownie:
var ele = $(document.getElementById('last, first'));
Ma spacje i nie działa:
var ele = $('#last, first');
To ma przecinek i nie działa:
var ele = $('#last,first');
źródło
Zmiana znaczenia dowolnego innego znaku na selektorze (wraz ze spacjami) .
źródło