从.each调用的函数内部删除标记

时间:2012-11-19 15:57:15

标签: jquery

在由.each定价的函数中,我想删除a标记/。 这是一个不起作用的例子:

$('div.link').has('div.entry:has(p.title:has(a[href^="http://i.imgur.com/"]))').each(function (i) {
    $(this).css('border', '5px solid');
    $(this).remove('a'); // Does NOT work! Nothing happens...
    console.log($(this));
})

点击下面的图片查看完整尺寸。标记的线是纯粹的巧合并且没有任何表示。要测试内容,请访问http://reddit.com并使用Firebug(加载jQuery): Firebug screenshot containing part of Reddits DOM

2 个答案:

答案 0 :(得分:5)

您需要找到它,然后将其删除:

$(this).find('a').remove();

答案 1 :(得分:3)

提供this作为上下文:

$("a", this).remove();

$函数的第二个参数通常是选择器的context倍,这意味着您要查找的区域与您的选择器匹配。在这种特殊情况下,我们说我们想在a中找到this元素。

jQuery将在内部将其转换为查找调用:

$(this).find("a").remove();

因此,如果你不介意一个稍微冗长的解决方案(几个字符,没什么大不了),你可以通过删除中间人语法并直接使用.find来获得非常微不足道的性能提升