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 o
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.
Try just
$(selectedContents).find('span');
I tried $(selectedContents).find('span'), but it resulted an empty set! As well as the filter, which too resulted empty set!
However $(selectedContents).children('span') resulted what I wanted!
Like patrick_dw said, probably jQuery does not work as expected with DocumentFragment!
Thanks all, for your help.
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/