所以我想您应该考虑使用$ .closest()而不是$ .parents() 。 但是首先,与往常一样,您需要知道您要处理的内容–两者之间的主要区别。
.closest() | 。父母() |
---|---|
从当前元素开始 | 从父元素开始 |
向上移动DOM树,直到找到与提供的选择器匹配的对象 | 在DOM树中浏览到文档的根元素,将每个祖先元素添加到一个临时集合中; 然后,如果有选择器,则根据选择器过滤该集合 |
返回的jQuery对象在原始集中的每个元素包含零个或一个元素 | 返回的jQuery对象包含原始集中每个元素的零个或多个元素 |
此jsperf显示了速度结果。
使用$ .parents()获取父容器
代码示例。
//remove handler
$('.btn.remove').on('click', _this.cache.$container, function(e)
{
e.preventDefault();
console.log('remove...');
$(this).parents('li').first().remove();
});
使用$ .closest()获取父容器
代码示例。
//remove handler
$('.btn.remove').on('click', _this.cache.$container, function(e)
{
e.preventDefault();
console.log('remove...');
$(this).closest('li').remove();
});