【问题标题】:jQuery get img source attributes from list and push into arrayjQuery 从列表中获取 img 源属性并推入数组
【发布时间】:2011-01-22 05:43:55
【问题描述】:

我有这个缩略图列表,并希望将图像路径(来源)推送到一个数组中:tn_array

<ul id="thumbnails">
    <li><img src="somepath/tn/004.jpg" alt="fourth caption" /></a></li>
    <li><img src="somepath/tn/005.jpg" alt="fifth caption" /></a></li>
    <li><img src="somepath/tn/006.jpg" alt="sixth caption" /></a></li>
</ul>

【问题讨论】:

    标签: jquery arrays loops attributes push


    【解决方案1】:

    您可以使用map() 更直接地创建src 属性数组:

    var tn_array = $("#thumbnails img").map(function() {
      return $(this).attr("src");
    });
    

    编辑: tn_array 在这里是一个对象,而不是一个严格的 Javascript 数组,但它将充当一个数组。例如,这是合法代码:

    for (int i=0; i<tn_array.length; i++) {
      alert(tn_array[i]);
    }
    

    但是,您可以调用 get(),这将使它成为一个严格的数组:

    var tn_array = $("#thumbnails img").map(function() {
      return $(this).attr("src");
    }).get();
    

    你如何区分?调用:

    alert(obj.constructor.toString());
    

    第一个版本是:

    function Object() { [native code] }
    

    第二个:

    function Array() { [native code] }
    

    【讨论】:

    • 是的,谢谢 +1。我正在寻找一种类似的技术来获取 val() 数组。有点令人惊讶的 jquery 没有为此内置的东西。看起来像是一个狡辩,但它毕竟是“少写”库。 :)
    • 还要记住,如果你想要一个实际的数组,你需要在 .map() 的结果上调用 .get()。
    【解决方案2】:

    你可以循环遍历 img 元素:

    var tn_array = Array();
    
    $('#thumbnails img').each(function() {
        tn_array.push($(this).attr('src'));
    });
    

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2018-08-30
      相关资源
      最近更新 更多