我正在清理我的旧jQuery插件,我找到了这段代码:
var foo = $some.find(theCriteria).andSelf().filter(theCriteria);
Run Code Online (Sandbox Code Playgroud)
这看起来很愚蠢,就像它相当于:
var foo = $some.andSelf().find(theCriteria);
Run Code Online (Sandbox Code Playgroud)
我认为我编写第一个版本有一些原因,但我想不出它会是什么.后一个代码功能是否相同?或者我错过了一些微妙的互动?
在上面:
$some 是一个jQuery对象,由一个或多个元素组成,通常包含子元素.theCriteria是一个复合CSS选择器字符串,例如".bar, .jim, .jam".andSelf()是因为$some可能选择了一个应用了其中一个CSS类的根元素,如果是,我想选择它.是的,有区别:
<div id="test" class="bar">
<div class="bar" />
</div>
Run Code Online (Sandbox Code Playgroud)
用这些表达式:
// gives both <div>
$('#test')
.find('.bar')
.andSelf()
.filter('.bar');
// only returns the inner <div>
$('#test')
.andSelf()
.find('.bar')
Run Code Online (Sandbox Code Playgroud)
这是因为filter()对结果集中的所有项进行操作,而find()对结果集内的每个节点执行DOM搜索,从而有效地跳过它们.
除此之外.addBack(selector)你可以这样做:
$('#test')
.find('.bar')
.add($('#test').filter('.bar'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |