Mam duży ciąg HTML zawierający wiele węzłów potomnych.
Czy można zbudować obiekt jQuery DOM przy użyciu tego ciągu?
Próbowałem, $(string)
ale zwraca tylko tablicę zawierającą wszystkie poszczególne węzły.
Próbuję uzyskać element, na którym mogę użyć funkcji .find ().
javascript
jquery
html
user1033619
źródło
źródło
Odpowiedzi:
Aktualizacja:
Od jQuery 1.8 możemy użyć $ .parseHTML , który będzie parsował ciąg znaków HTML do tablicy węzłów DOM. na przykład:
PRÓBNY
PRÓBNY
Co się dzieje w tym kodzie:
$('<div/>')
jest podróbką<div>
, której nie ma w DOM$('<div/>').html(string)
dołącza sięstring
do tego fałszywego<div>
jak dzieci.contents()
pobiera elementy podrzędne tego fałszywego obiektu<div>
jako obiekt jQueryJeśli chcesz
.find()
pracować, spróbuj tego:PRÓBNY
źródło
.find()
operację, sprawdź demostring = '<input type="text" value="val" />'
$("<div/>")
, dlaczego nie możesz$(string)
?Od jQuery 1.8 możesz po prostu użyć parseHtml, aby utworzyć obiekt jQuery:
Stworzyłem JSFidle, który to demonstruje: http://jsfiddle.net/MCSyr/2/
Przetwarza dowolny ciąg HTML do obiektu jQuery i używa funkcji find do wyświetlenia wyniku w elemencie div.
źródło
Tworzy to fikcyjny obiekt jQuery, w którym można umieścić ciąg znaków w formacie HTML. Wtedy masz tylko dzieci.
źródło
.filter()
zamiast.find()
.Istnieje również wspaniała biblioteka o nazwie cheerio zaprojektowana specjalnie do tego celu.
źródło
Używam następujących szablonów HTML:
Uwaga: Zakładając, że używasz jQuery
źródło
powodem, dla którego $ (string) nie działa, jest to, że jquery nie znajduje treści html między $ (). Dlatego musisz najpierw przeanalizować go do html. gdy masz zmienną, w której przeanalizowałeś kod HTML. możesz wtedy użyć $ (string) i użyć wszystkich funkcji dostępnych na obiekcie
źródło