I have a DocumentFragment stored in "selectedContents", and I am trying to find "span" elements in it, with the help of jQuery. It has two child nodes, where the first one is a text node, and the second one a span.
When I try $(selectedContents.childNodes).find('span')
, it returns an empty set!
However, when I print the "$(selectedContents.childNodes)[1].localName"
it says "span"!
Is there anything wrong in my find? Please help.
Thanks
Srikanth
Because you're passing a collection of elements, you need to use .filter()
to filter the <span>
out of the set.
$(selectedContents.childNodes).filter('span');
The .find()
method is used to search for descendants.
EDIT: Note that your approach of passing the childNodes
into the jQuery object is correct. You can't pass a documentFragment
as some suggest.
Here's an example to illustrate: http://jsfiddle.net/P8nur/
With $(selectedContents.childNodes)
you already selected all elements from the selectedContents
. So doing a find would execute the method on the first element of that selector.
Try this one:
$(selectedContents).find('span')
The thing here is $(selectedContents)
return a jQuery magic thing while $(selectedContents.childNodes)
return something like an ugly array. So, no find()
function for your array.
Use $(selectedContents).find('span')
or $(selectedContents.childNodes).filter('span')
, as @justkt and @patrick dw said.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With