jQuery:循环遍历元素并包装在不同的标签中

时间:2013-01-30 19:04:08

标签: jquery arrays loops

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

我已经将td元素的数组放到h3中,但是当我尝试遍历它们并将它们包装在h3中时标签,我得到Error: NOT_FOUND_ERR: DOM Exception 8,我相信找不到DOM元素,这没有任何意义。

查看我评论过的fiddle

奖励积分:td都是问题,而我能想到的将它们分成数组索引的唯一方法就是将它们拆分为?,这样就会切出问号在输出中。将它们放回去的最佳方法是什么?

更新

如果你想查看页面并在控制台中尝试一下,那就是here

2 个答案:

答案 0 :(得分:1)

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


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

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

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

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

答案 1 :(得分:0)

您可以简单地将内容抓取到数组中,然后使用数组执行任何操作,而无需担心问号。

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