【问题标题】:jQuery: loop through elements and wrap in different tagjQuery:遍历元素并包装在不同的标签中
【发布时间】:2013-01-30 19:04:07
【问题描述】:

我正在从公共域网站 (cancer.gov) 上抓取内容,并且我想重新格式化标记,因为它在表格中的格式非常糟糕。我有 jQuery 供我使用,我只是想把它放到控制台中,这样我就可以将它复制并粘贴到 Vim 中。

我已经制作了一个我想制作成h3td 元素数组,但是当我尝试循环它们并将它们包装在h3 标签中时,我得到@ 987654326@,我认为是找不到 DOM 元素,这没有意义。

查看我评论的fiddle

加分:td 都是问题,我能想到的将它们拆分为数组索引的唯一方法是将它们拆分到 ? 上,这样可以去掉输出中的问号。将它们放回原处的最佳方法是什么?

更新

如果您想查看该页面并在控制台中尝试操作,请输入here

【问题讨论】:

  • 您正在使用字符串。一个简单的 console.log(this) 会告诉你问题。
  • 是的,但我需要将它们放在一个数组中。根据我的小提琴,console.log(this) 将如何工作?

标签: jquery arrays loops


【解决方案1】:

创建一个 jQuery 对象并不会神奇地将它们变成 DOM 元素。


只需在 HTML 的大字符串上创建,然后将其传递给 jQuery 构造函数:

var questions = $('selector here...').text().split('?');

questions = $('<h3>' + questions.join('?</h3><h3>') + '?<h3>' );

这是你的小提琴:http://jsfiddle.net/M4Pn5/1/

【讨论】:

    【解决方案2】:

    您可以简单地将内容抓取到一个数组中,然后对数组做任何您想做的事情,而不必担心问号。

    var myarr = $('#Table1').find('tr:even');//even to exclude the hr rows
    

    这里我展示了一些你可以用它做的事情:

    var myQuest = myarr.find('td:eq(0)').map(function () {
        return $(this).html();
    });//questions
    var myAns = myarr.find('td:eq(1)').map(function () {
        return $(this).html();
    });// answers
    
    //process the arrays:
    for (var i = 0; i < myQuest.length; i++) {
        alert(myQuest[i]+ myAns[i]);
    };
    
    myarr.find('td:eq(0)').wrap('<h3>');//wrap the questions
    

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多