我想知道在 jQuery 中查找元素的子元素的最佳方法是什么,但还要在“查找”中包含父元素。
这是我简化的基本 HTML 设置:
<div id="container">
<form id="form1"> <!-- form 1 content --> </form>
<form id="form2"> <!-- form 2 content --> </form>
</div>
我想要这样的功能......
function getForms ($container)
{
// Option 1
var $allForms = $container.find('form').andSelf().filter('form');
// Option 2
var $allForms = $container.find('form');
if ($container.is('form')) $allForms.add($container);
// Should return all the forms in the container if passed $('#container')
// Or return just one form if passed $('#form1')
return $allForms;
}
我相当确定选项 1 或 2 都会起作用。有谁知道上面哪个选项更有效?还有其他更优雅或更高效的选择吗?
编辑:我对选项 2 中的.is() 不满意,因为当容器中有多个 jQuery 对象时它不起作用。所以我想出了这样的事情:
// Option 3
function getContainerElements ($container, selector) {
return $container.find(selector).add($container.filter(selector));
}
我没有对其进行过多测试,但我认为它适用于所有一般情况。