我有很多关于产品信息的行,我想获得标题,产品ID和价格。当我使用$ .each遍历所有内容时,它确实适用于标题和产品ID,但不适用于价格。我总是得到每一行的所有价格。这是我的代码:
<tr id="ric685197870" class="n_ListTab1 ric_art">
<td class="n_ListPic"><img title="Das Angebot verfügt über ein Bild." alt="Das Angebot verfügt über ein Bild." src="https://pics.ricardostatic.ch/ImgWeb/2/V3/listing/img.gif"></td>
<td class="n_ListIcons"><a title="Das Angebot endet in weniger als 3 Stunden." href="javascript:help('symbol_uebersicht')"><span class="sprite icon_3h"></span></a></td>
<td class="n_ListTitle"><a class="entry-title" href="http://www.ricardo.ch/kaufen/buecher-und-comics/belletristik/sonstige/ich-jagte-eichmann-s-wiesenthal/v/an685197870/" title="Ich jagte Eichmann/S.Wiesenthal">Ich jagte Eichmann/S.Wiesenthal</a></td>
<td class="n_ListDate">11.9.2012 11:00</td>
<td class="n_ListOffer">0</td>
<td class="n_ListPrice">
<div class="Auc">
<span class="currency">CHF </span>0.10
</div></td>
</tr>
<tr id="ric686793488" class="n_ListTab2 ric_art">
<td class="n_ListPic"><img title="Das Angebot verfügt über ein Bild." alt="Das Angebot verfügt über ein Bild." src="https://pics.ricardostatic.ch/ImgWeb/2/V3/listing/img.gif"></td>
<td class="n_ListIcons"><a title="Das Angebot endet in weniger als 3 Stunden." href="javascript:help('symbol_uebersicht')"><span class="sprite icon_3h"></span></a></td>
<td class="n_ListTitle"><a class="entry-title" href="http://www.ricardo.ch/kaufen/buecher-und-comics/belletristik/romane/sonstige/angelika-overath-alle-farben-des-schnees/v/an686793488/" title="Angelika Overath: Alle Farben des Schnees">Angelika Overath: Alle Farben des Schnees</a></td>
<td class="n_ListDate">11.9.2012 11:02</td>
<td class="n_ListOffer">1</td>
<td class="n_ListPrice">
<div class="Auc">
<span class="currency">CHF </span>4.00
</div></td>
</tr>
<script type="text/javascript">
$.each($(".n_ListTitle"), function(i, v) {
var node = $(this);
var nodeParent = node.parent();
var nodeText = node.text();
var nodePrice = nodeParent.children(i)[5];
var prodPrice = $(nodePrice.nodeName + ' div').text();
var prodId = nodeParent.attr('id').replace('ric', '');
var prodTitle = nodeText;
var json = {
id : prodId,
price : prodPrice,
currency : "CHF",
name : prodTitle
};
console.log(json);
});
我明白了:
对象
货币:“瑞士法郎”
id:“681625138”
名称:“BEVERLEY HARPER:HELLER MOND在SCHWARZER NACHT - TASCHENBUCH”
价格:“这是问题:每一行的每个价格”
我希望这是可以理解的,我希望有人能帮助我弄明白。谢谢!
答案 0 :(得分:4)
var prodPrice = $(nodePrice.nodeName + ' div').text();
这不符合你的想法。 nodePrice.nodeName
为"tr"
,因此您的选择器为:
$('tr div')
所以,你得到了所有的价格,因为你选择了div
的孩子的每一个tr
。
你真正想要的是:
var prodPrice = $('div', nodePrice).text();
这相当于$(nodePrice).find('div')
此外:
var nodePrice = nodeParent.children(i)[5];
你为什么要在这里通过i
? i
是“数组”中的索引,对.children
没有任何用处。你想用这个:
var nodePrice = nodeParent.children().eq(5);
或者,更好的是(你有这些课程,让我们使用'em):
var nodePrice = node.siblings('.n_ListPrice');
答案 1 :(得分:2)
试试这个:
var nodePrice = node.siblings(".n_ListPrice");
然后您可以使用
提取实际价格$(nodePrice).text();
答案 2 :(得分:1)
这适用于数组(jQuery.each()):
$.each($(".n_ListTitle"), function(i, v) {
您需要(.each()):
$(".n_ListTitle").each(function(i, v) {
答案 3 :(得分:1)
var nodePrice = nodeParent.find('.n_ListPrice div');
var prodPrice = nodePrice.text();
如果您决定稍后添加一行,则首选使用除eq(5)
以外的其他选择器,您将不得不更改所有这些...使用find()
查找具有priceholder类别的道明并选择里面的div。你去了:))