我有一长串 DOM 元素,我从中获取属性以保存到对象。
一遍又一遍地使用 jQuery 选择器似乎是过度使用 DOM 操作。
var a = $('input[name=a]:checked').val(),
b = $('input[name=b]')is(':checked'),
c = $('input[name=c]').val();
我在想可能有一种方法可以做一些事情var $form = $('#form');
,然后使用$form.find('input[name=a]:checked')
or $form.children('input[name=b]')
or $form.filter('input[name=c]')
。但是这些例子都没有了。我相信因为我没有选择元素本身,所以选择它们的父元素不会阻止 jQuery 不得不反复阅读 DOM。真的吗?
另一种选择可能是专门为此 (:/) 向所有元素添加另一个类,但出于某种原因,这似乎很奇怪。不过,它会给我一个数组,我假设我可以用它来防止重复的 DOM 遍历?像这样的东西:
var $formElementArray = $('.the_elements_you_wanted');
然后使用过滤器?
var a = $formElementArray.filter('input[name=a]:checked').val(),
b = $formElementArray.filter('input[name=b]')is(':checked'),
c = $formElementArray.filter('input[name=c]').val();`
这是最好的方法吗?这种事情有最佳实践吗?我必须专门添加一个类来防止过多的 DOM 遍历似乎有点蹩脚,因为我正在操作的一些元素不会被组合在一起,但如果是这样的话,c'est la vie .