[jQuery] how can i find() including self?
With the follow style of markup:
<div id="my-combo" role="combobox" aria-owns="my-list another-thing">
</div>
<div id="my-list" role="list">
</div>
I need to find the first element of type [role=list], in either the
descendants
of #my-combo, or the elements (and descendants) identified in aria-
owns.
I was think of creating a plugin to make this easier:
$('#my-combo').owns('[role=list]:first');
$.fn.owns = function(selector) {
// Gather all the id's from aria-owns attrs, appending '#' to each,
and separate with ','
var include = $(this).filter('[aria-owns]').map(function() {
return this.getAttribute('aria-owns').replace(/([^\s]+)/g, '#
$1').replace(/\s+/g,',');
});
if (include.length) {
// Find all the referenced elements
var owned = $(Array.prototype.join.call(include,','));
// HELP NEEDED HERE!
// Here I need to pretend that the 'owned' elements are also
children of 'this'
// FakeElement(owned + this.children()).find(selector)
// or
// owned.add(this.children()).findIncSelf(selector)
} else {
return this.find(selector);
}
};
I'm puzzled as to how to combine the owned elements and the
descendants of the
context elements, and find the using the requested selector.
Any ideas?
Cheers
-Mark