我正在尝试从此html部分获取所有数据名称属性
<div class='get-all'>
<div class='left-wrapper'>
<div class='field-wrapper'>
<div class='field'> <span class='product-id' data-name='itemId'>5</span>
<img src='carousel/images/120231671_1GG.jpg' width='52' height='52'> <span class='final-descript' data-name='itemDescription'>Product 1</span>
<span class='product-id' data-name='itemAmount'>225,99</span>
<span class='product-id' data-name='itemQuantity'>1</span>
</div>
<div class='fix'></div>
<div class='field'> <span class='review-price'>$ 225,99</span>
</div>
</div>
<div class='field-wrapper'>
<div class='field'> <span class='product-id' data-name='itemId'>4</span>
<img src='carousel/images/120231671_1GG.jpg' width='52' height='52'> <span class='final-descript' data-name='itemDescription'>Product 2</span>
<span class='product-id' data-name='itemAmount'>699,80</span>
<span class='product-id' data-name='itemQuantity'>1</span>
</div>
<div class='fix'></div>
<div class='field'> <span class='review-price'>$ 699,80</span>
</div>
</div>
</div>
<div class='left-wrapper'> <span class='f-itens'>Total</span><span id='fff' class='f-value'>925,79</span>
<hr class='f-hr' /> <span class='f-itens'>Shipping</span><span class='f-value' id='f-value'> - </span>
<hr class='f-hr' />
<div class='f-itens tots'>Total Price</div><span class='f-value' id='pagar'>-</span>
</div>
</div>
我正在使用这个javascript
$(".get-all").each(function(index, element){
$('[data-name]').each(function(index, element) {
if($(this).attr("data-name")) {
if (startsWith($(this).attr("data-name"),"itemAmount")) {
var a = $(this).html()
var b = a.replace(".", "");
var c = b.replace(",", ".");
params[$(this).attr("data-name") + (index+1)] = c;
} else {
params[$(this).attr("data-name") + (index+1)] = $(this).html();
}
}
});
});
但我只得到第一个数据名称span atributes,比如
ItemId = 5
ItemDescription = Product 1
ItemAmount 225,99
ItemQuantity = 1
如何在此跨度内获取所有属性名称?感谢所有回复。
答案 0 :(得分:1)
您可以使用$.map
和$.get
,并且只能直接捕获data-name
的跨度,从而避免额外的if
条件。
params = $(element).find("span[data-name]").map(function() {
return $(this).data("name");
}).get();
根据你的评论,我想你想要,(但不知道为什么)
params = $(element).find("span[data-name]").map(function() {
var rtn = $(this).data("name");
return rtn.replace((rtn == 'itemAmount') ? "." : ","), "");
}).get();
答案 1 :(得分:1)
一个简单的
$('[data-name]').each(function(index, elem) {
// do things with index and elem
$(elem); // Will be your span
});
将为您提供具有data-name
属性的所有元素。