jQuery find(..)遍历方法不包括当前节点 - 它以当前节点的子节点开始.在匹配算法中调用包含当前节点的查找操作的最佳方法是什么?通过文档查看没有任何内容立即跳出来.
Rob*_*ert 144
对于jQuery 1.8及更高版本,您可以使用.addBack().它需要一个选择器,因此您不需要过滤结果:
object.find('selector').addBack('selector')
Run Code Online (Sandbox Code Playgroud)
在jQuery 1.8之前,你一直坚持使用.andSelf()(现已弃用并删除),然后需要过滤:
object.find('selector').andSelf().filter('selector')
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 41
你不能直接这样做,我能想到的最接近的是使用.andSelf()和调用.filter(),如下所示:
$(selector).find(oSelector).andSelf().filter(oSelector)
//or...
$(selector).find('*').andSelf().filter(oSelector);
Run Code Online (Sandbox Code Playgroud)
不幸的.andSelf()是没有选择器,这将是方便的.
限定
$.fn.findSelf = function(selector) {
var result = this.find(selector);
return (this.is(selector)) ?
result.add(this) : result;
};
Run Code Online (Sandbox Code Playgroud)
然后用
$.findSelf(selector);
Run Code Online (Sandbox Code Playgroud)
代替
$find(selector);
Run Code Online (Sandbox Code Playgroud)
可悲的是,jQuery没有内置功能.这么多年的发展真的很奇怪.由于.find()的工作方式,我的AJAX处理程序未应用于某些顶级元素.
$('selector').find('otherSelector').add($('selector').filter('otherSelector'))
Run Code Online (Sandbox Code Playgroud)
您可以存储$('selector')在变量中以加快速度。如果您非常需要,您甚至可以为此编写自定义函数:
$.fn.andFind = function(expr) {
return this.find(expr).add(this.filter(expr));
};
$('selector').andFind('otherSelector')
Run Code Online (Sandbox Code Playgroud)
小智 5
接受的答案非常低效,并过滤了已经匹配的元素集。
//find descendants that match the selector
var $selection = $context.find(selector);
//filter the parent/context based on the selector and add it
$selection = $selection.add($context.filter(selector);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27824 次 |
| 最近记录: |