迭代一些div并将信息提取到数组中?

时间:2014-01-02 13:21:06

标签: javascript jquery html

我有一个像这样的几个div的页面

<div class="market_listing_row" id="12345">
 ...
 <div class="priceblock">
  <span class="price">0,0</span>
 </div>
</div>

我想为每个人创建一个JS对象数组:

[{ id: '12345', price: '0,0'}]

如何迭代这些div?我尝试用jQuery和原始JS来做,但失败了。

编辑: 显然CasperJS和jQuery一起造成混乱,可能是因为'this'。无论哪种方式,我找到了一种使用casper模块方法处理问题的方法:

 var price = this.fetchText('div.market_listing_row .price').split('\n');
var id = this.getElementsAttribute('div.market_listing_row', 'id');

这会创建两个数组:价格和ID。

4 个答案:

答案 0 :(得分:2)

我建议:

var objArray = $('.market_listing_row').map(function () {
    return {
        'id': this.id,
        'price': $(this).find('.price').text()
    };
}).get();

JS Fiddle

参考文献:

答案 1 :(得分:1)

尝试,

xResult = [];

$('.market_listing_row').each(function(){

   var xJson = {};
   xJson.id = $(this).attr('id');
   xJson.price = $(this).find('.price').text();

   xResult[xResult.length] = xJson;

});

答案 2 :(得分:1)

JSFIDDLE

我使用以下代码在小提琴上做了一个非常基本的例子。

var arr = [];
$('.market_listing_row').each(function(){
    id = $(this).attr('id');
    price = $(this).find('.price').text();
    arr.push({id: id, price: price});
});

如果您有任何疑问,请与我们联系。希望这有帮助!

答案 3 :(得分:1)

H i,将原生(原始js)版本投入混合。 http://jsfiddle.net/sD67h/1/

借助:

function $class(str,_scope) {
  if(!_scope) { _scope=document; }
    var elems = _scope.getElementsByTagName('*'), elArray =[];
    var len=elems.length;
      for (var cnt = 0; cnt < len; ++cnt) {
        if((' ' + elems[cnt].className + ' ').indexOf(' ' + str + ' ') > -1) {
             elArray.push(elems[cnt]);
        }
      }
      return elArray;
  }

为了适合您的标记设置,可以像这样使用:

function getPriceObjects() {
    var marketrows = $class("market_listing_row"), marketArray=[];
    for (var i = 0, len=marketrows.length; i < len; ++i) {
     var id = marketrows[i].getAttribute("id");
     var price = $class("price",marketrows[i])[0].innerHTML;
        marketArray.push({ id: id, price: price});
     }
    return marketArray;
}

var marketPriceArray = getPriceObjects();