Jquery在“.each”函数中删除元素

时间:2013-10-29 13:25:42

标签: javascript jquery html each

我尝试使用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>

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

试试这个

$('div.myclass a').each(function (i, e) {
    $(e).each(function (i, ex) {
        $(ex).find("div").remove();
        $(ex).html();
    });
});

DEMO

更简单

$('div.myclass a').each(function (i, e) {
    $(e).find("div").remove();
    $(e).html();
});

DEMO2

答案 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(););
    }
}