是否有在jquery中构建选择器字符串的替代方法?
特别是,我试图从几个表单元素的标签中提取信息,因此我需要创建像$('[for=#id]')
这样的查询。在表单元素上的每次迭代的每次传递中创建查询字符串似乎是不优雅的(并且可能效率低下)。
我能找到的唯一类似问题是jQuery (anti-)pattern: building selectors with string manipulation,它没有任何有用的答案。
答案 0 :(得分:1)
至少将搜索范围限制为您正在查找的表单。按属性搜索是无效的,因为您必须迭代根元素集中的每个元素。所以不要搜索DOM中的每个元素,而是限制搜索:
var forID = $('#my-form').find('[for=#id]');
您可以通过搜索表单内的标签,然后过滤到您想要的内容来加快速度:
var $allLabels = $('#my-form').find('label');
//then you can find a specific element by searching in the $allLabels object.
$allLabels.filter('[for="#id"]');
如果您的标签没有动态更改,那么您应该将其选择缓存在循环之外;总是在循环外缓存在循环内没有变化的值。
答案 1 :(得分:0)
如果您每次都需要处理每个元素,那么您只需执行一次查询并将结果存储在变量中。然后,只要您需要提取这些元素中的信息,就可以遍历该变量中的所有内容,从而无需每次都查询元素列表。