2012-11-16 14 views
19

Załóżmy mamZnajdź elementem w ciąg HTML

var testHTML = "<div id='demo_div'></div>"; 

chcę uzyskać powyżej div jak JQuery obiektu do manipulowania nim. Staram się znaleźć to:

var found = $(testHTML).find("#demo_div"); 

iz:

var found = $(testHTML).find("div"); 

Zarówno bez powodzenia. Mam pustą znalezioną zmienną. Co robię źle?

P.S. Tak wiem, że mogę mieć bezpośredni dostęp do mojego div z

$("#demo_div") 

ale nie mogę zrobić w moim przypadku - Muszę dostać go od zwykłego HTML, który zostanie przypisany do jakiejś zmiennej, tak jak w moim przykładzie z testHTML var.

UPDATE: Nawet gdybym nie wykorzenić div elementem jak tutaj:

var testHTML = "<html><div id='demo_div'></div></html>"; 

Nie mogę korzystać znaleźć do nawigacji div element.

Odpowiedz

48

Problemem jest to, że div jest element główny w kolekcji, więc trzeba użyć .filter() zamiast .find() (który wygląda tylko na elementach potomnych):

var found = $(testHTML).filter("#demo_div"); 

Jestem zakładając rzeczywisty HTML string jest bardziej skomplikowany niż ten w pytaniu, w przeciwnym razie nie musisz robić nic innego niż $(testHTML), a będziesz miał obiekt jQuery zawierający ten pojedynczy element.

+1

Tak, mam bardziej złożony kod HTML, a mój div nie jest jego źródłem. Ale nie ma tam pracy! –

+3

@MichaelZ - Wtedy twój problem jest najprawdopodobniej gdzie indziej. Jeśli element, którego szukasz, znajduje się w katalogu głównym kolekcji, użyj '.filter()', jeśli nie jest, użyj '.find()'. Zobacz [ten przykład] (http://jsfiddle.net/jamesallardice/CWnvu/1/). –

+0

Zobacz moją aktualizację i wypróbuj ją sam: –

0

Można użyć funkcji samego javascript jako .search().

testHTML.search('demo_div')>-1 
Powiązane problemy