【发布时间】:2013-08-06 11:10:02
【问题描述】:
我有一个元素集合,虽然每个有一个唯一的字符串标识符,我不能安全地将它的值用作元素 ID 因为我不能保证它只会包含valid characters。因此,我将标识符存储在每个元素 jQuery .data() 对象中。虽然我可以使用data- 属性,但我不太喜欢在可能不得不转义引号等的地方使用选择器的想法,但如果有巨大的效率奖励,则应该考虑到这一点。使用.data() 对象的解决方案也很棒,因为它适用于任何数据类型。
我想知道选择单个元素的最有效方法是什么。目前,这是我的解决方案:
function get_group($from, group) {
var $result = $();
$from.each(function() {
if($(this).data("group") == group) {
result = $(this);
return false;
}
});
return $result;
}
我会遍历每个结果,直到找到匹配项。当我这样做时,我会打破循环。通过将$result 初始化为一个空的jQuery 对象,我将始终返回jQuery,我认为这与标准实践最为一致,尤其是.filter() 方法。
我认为这比使用带有函数的.filter() 更好,因为它显式返回单个(或没有)项目,并在需要时立即停止迭代,但是有更好的方法吗?强>
【问题讨论】:
-
您是否动态创建这些元素?或者您对它们的创建和附加到页面有任何控制吗?
-
如果您的数据不包含引号(单引号或双引号),为什么不使用数据组属性?
标签: optimization jquery jquery-data jquery-filter