使用Jquery在div后面删除一个元素

16
我想使用jQuery删除紧随div后的p标签。以下是我的HTML代码:
<div class="fbcommentbox"></div>
<p>Powered by <a href="http://pleer.co.uk/wordpress/plugins/facebook-comments/">Facebook Comments</a></p>
所以在这种情况下,位于 <p> 标签内的所有内容都将被设置为 display:none
这似乎在jquery中非常简单,但我似乎无法找到方法。任何帮助都将不胜感激。谢谢!
3个回答

33

这应该可以正常工作:

$('.fbcommentbox').next('p').remove();

我们选择了div元素,然后使用next方法获取其下一个元素。


2
也许使用.next('p')会更加简洁。 - kapa

33
$('div.fbcommentbox + p').hide();
  • hide() 将元素的display属性设置为 none
  • remove() 从DOM中移除元素。

选择你需要的方法。


@Tomalak,你能解释一下为什么 next() 是不可取的吗? :-) - Ben Everard
@Ben: 这并非不可接受,但速度比选择器慢(因为使用此选择器,jQuery 可以利用现代浏览器原生支持的querySelectorAll)。在这种情况下,实际差异可能微不足道,但对于更复杂的情况,牢记这一点很有用。 - Tomalak
2
出于好玩,我在+.next()之间进行了性能测试,结果显示next更快,如果(由于某种原因)你需要在循环内遍历DOM,则可能会有所不同。http://jsperf.com/jquery-next-vs-plus - Ben Everard
我尝试使用onclick $(this + 'p').remove(),这会删除紧挨着myclass的所有<p>元素...所以我使用$(this).next('p').remove()只删除紧随myclass后面的那个。以防万一有人需要相同的功能... - sstauross

1

$('.fbcommentbox').next().hide(); 或者 $('.fbcommentbox').css('display','none')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接