尝试通过$('div').attr('data', 'ip')
执行.each()
只返回undefined
。
我们说我有4个div
<div class="box" data-ip="ipvalue">content</div>
<div class="box" data-ip="ipvalue">content</div>
<div class="box" data-ip="ipvalue">content</div>
<div class="box" data-ip="ipvalue">content</div>
我需要迭代每一个并获取data-ip值。
我的代码,它只返回undefined(server,serverObj,是变量)。
var serversObj = $('.server');
serversObj.each(function(index, el) {
return $(this).data('ip');
});
我做错了什么?
答案 0 :(得分:2)
如果要获取所有元素的所有值
,则需要使用mapvar ips = $(".box") //get all of the elements
.map(
function(){
return $(this).data("ip"); //get the value from the attribute
}
).get(); //returns an Array
答案 1 :(得分:0)
$('.box').each(function(){
console.log($(this).attr('data-ip'));
});
答案 2 :(得分:0)
首先,这是完全错误的:
$('div').attr('data', 'ip')
这是将名为data
的属性设置为值"ip"
,它不会涉及数据属性。实际上,您正在执行此操作:<div data='ip'>
。
如果要访问名为data-ip
的数据属性,则需要
$('div').data('ip')
如果您想要访问一系列元素,则不能仅return
来自.each
循环。该值被丢弃。您需要将map
输入元素集$('.server').map(function () { return $(this).data('ip') })
输出到一组输出:
.server
这将生成一个数组,其中每个元素都与data-ip
的{{1}}属性匹配。
答案 3 :(得分:0)
以下是您提供的标记示例的代码。
var serversObj = $('.box'),
Ipvals = [];
serversObj.each(function(index, el) {
Ipvals.push( $(this).data('ip'));
});
console.log( Ipvals);
您还可以使用$ .map()返回相同的数组。