我有一个关于jQuery过滤效率的问题.我刚写了很长的表达式,我想知道如果当前匹配数为0,jQuery是否会停止过滤.
passengers.filter('input.FromDate[value="01/09/2011"]')
.closest('tr')
.filter('input.ToDate[value="08/09/2011"]')
.length;
Run Code Online (Sandbox Code Playgroud)
如果在第一次filter()调用之后匹配的数量为0,jQuery将继续搜索DOM还是放弃额外的调用并返回0?
使用 jQuery 进行链式调用的好处是,当没有匹配项时,不会发生任何不好的事情。
当您调用.filter并产生零个匹配时,您将根据定义执行随后的链接方法调用,因为它们是直接在返回的对象上调用的(这就是链接)。
当没有匹配项时,JavaScript 仍将调用每个返回对象上的每个后续链接方法。发生多少浪费的处理取决于具体方法的实施方式。
$.fn.doesItTryToDoStuff = function() {
alert('called');
// here I could have some wasteful process
// which could foolishly be executed
// even when there are no elements
return this.each(function() {
$(this).css("border", "1px solid red");
});
};
$("input").filter("[value='foo']").doesItTryToDoStuff().doesItTryToDoStuff();
Run Code Online (Sandbox Code Playgroud)
我希望大多数 jQuery 方法都经过编码,以便在测试集合的长度之前不会发生任何剧烈的情况,但你永远不知道。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |