gpt4 book ai didi

javascript - 当选择器返回多个元素时使用 JQuery 的 .attr()

转载 作者:行者123 更新时间:2023-11-30 08:38:33 24 4
gpt4 key购买 nike

我正在尝试从多个字段中的每个字段中提取 2 条数据。所有字段都被赋予了相同的“名称”,以便于引用它们。

 <input type="text" name="common_name" data-X='ABC'>

我提取的第一条数据是它们的值,这似乎确实有效。我的问题是当我尝试使用 attr() 时。那时它就停在水中了。

var length = $('[name=common_name]').size();
for(var i=0; i < length; i++){
var value = parseInt($('[name=common_name]').get(i).value); //doesn't kill the script
var dataX = $('[name=common_name]').get(i).attr('data-X'); //Script is killed here
}

因为当选择器根据 id 选择元素时,我一般不会遇到使用 attr() 的问题,所以我认为这个问题与以下事实有关jQuery 返回多个元素的情况。让我感到困惑的是,我认为 get(#) 应该获取特定的……在这种情况下,我看不出问题出在哪里。 (毕竟,当我使用 val() 时,使用 get(#) 确实有效)。

那么……为什么 attr() 在这里不起作用?

最佳答案

.get()返回一个没有 .attr() 的 dom 元素引用方法,所以你可以使用 .eq()将返回一个 jQuery 对象的方法

var length = $('[name=common_name]').size();
for (var i = 0; i < length; i++) {
var value = parseInt($('[name=common_name]').eq(i).val()); //doesn't kill the script
var dataX = $('[name=common_name]').eq(i).attr('data-X'); //Script is killed here
}

迭代 jQuery 对象集合的正确方法是使用 .each()为 jQuery 集合中的每个元素调用回调的方法

$('[name=common_name]').each(function () {
var $this = $(this);
var value = parseInt($this.val()); //or this.value
var dataX = $this.attr('data-X'); //or $this.data('X')
})

关于javascript - 当选择器返回多个元素时使用 JQuery 的 .attr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com