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