我尝试使用Node.js抓取网页。我只想删除链接中的div节点并获取字符串“John Doe”。我在这做错了什么?
<div class="myclass">
<a href="page.html">
<div><img src="image.jpg" /></div>
John doe
</a>
</div>
$('div.myclass a').each(function(i, e) {
$(e).each(function(i, e) {
console.log($(e).remove("div").html());
}
}
此javascript代码块返回完全相同的html部分(div未删除)
<div class="myclass">
<a href="page.html">
<div><img src="image.jpg" /></div>
John doe
</a>
</div>
感谢您的帮助!
答案 0 :(得分:0)
试试这个
$('div.myclass a').each(function (i, e) {
$(e).each(function (i, ex) {
$(ex).find("div").remove();
$(ex).html();
});
});
更简单
$('div.myclass a').each(function (i, e) {
$(e).find("div").remove();
$(e).html();
});
答案 1 :(得分:0)
在您的代码中,问题在于行$(e).remove("div")
,它正在尝试从匹配的集div
中删除e
元素,但e
是当前的anchor
元素$(e).remove("div")
不会删除任何内容,而是需要在当前div
元素中找到a
子元素并将其删除。
即使html无效,您也可以删除div
$('div.myclass a').each(function(i, e) {
$(this).children('div').remove();
var text = $.trim($(this).text());
console.log(text)
})
演示:Fiddle
答案 2 :(得分:0)
你可以children
运作吗
$('div.myclass a').each(function(i, e) {
$(e).each(function(i, e) {
console.log($(e).children('div:first').remove(););
}
}