Eu tenho uma grande seqüência de caracteres HTML contendo vários nós filhos.
É possível construir um objeto DOM jQuery usando essa string?
Eu tentei, $(string)
mas ele retorna apenas uma matriz que contém todos os nós individuais.
Tentando obter um elemento no qual eu possa usar a função .find ().
javascript
jquery
html
user1033619
fonte
fonte
Respostas:
Atualizar:
No jQuery 1.8, podemos usar $ .parseHTML , que analisará a string HTML em uma matriz de nós DOM. por exemplo:
DEMO
DEMO
O que está acontecendo neste código:
$('<div/>')
é uma farsa<div>
que não existe no DOM$('<div/>').html(string)
acrescentastring
dentro desse falso<div>
quando crianças.contents()
recupera os filhos desse falso<div>
como um objeto jQuerySe você quiser fazer o
.find()
trabalho, tente o seguinte:DEMO
fonte
.find()
operação também, verificar o demostring = '<input type="text" value="val" />'
$("<div/>")
, por que não pode$(string)
?A partir do jQuery 1.8, você pode usar o parseHtml para criar seu objeto jQuery:
Eu criei um JSFidle que demonstra isso: http://jsfiddle.net/MCSyr/2/
Ele analisa a string HTML arbitrária em um objeto jQuery e usa find para exibir o resultado em uma div.
fonte
Isso cria um objeto jQuery fictício no qual você pode colocar a string como HTML. Então, você recebe apenas os filhos.
fonte
.filter()
vez de.find()
.Há também uma ótima biblioteca chamada cheerio, projetada especificamente para isso.
fonte
Eu uso o seguinte para meus modelos de HTML:
Nota: Supondo que você esteja usando jQuery
fonte
a razão pela qual $ (string) não está funcionando é porque o jquery não está encontrando conteúdo html entre $ (). Portanto, você precisa primeiro analisá-lo em html. depois de ter uma variável na qual você analisou o html. você pode usar $ (string) e usar todas as funções disponíveis no objeto
fonte