我已经找了几天,但我找不到解决这个问题的方法。它可能非常明显,但有没有办法删除包含另一个元素的元素?在这种情况下,我想删除包含类“tumblr_blog”的锚的<p>
元素。我会使用:contains,但默认情况下段落包含一个没有类的冒号,而段落元素没有类,那么有没有办法删除包含tumblr_blog类的锚点的段落?此脚本还应删除段落中的:尽管它没有类。如果有人能帮助我,它真的会让我的夜晚。谢谢!
<script>
$(function(){
var $container = $('#posts');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '#entry',
columnWidth: 370,
});
});
$container.infinitescroll({
navSelector : '#page-nav', // selector for the paged navigation
nextSelector : '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '#entry', // selector for all items you'll retrieve
loading: {
finishedMsg: '<em></em>',
}
},
// trigger Masonry as a callback
function( newElements ) {
// hide new items while they are loading
var $newElems = $( newElements ).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
}
);
});
</script>
答案 0 :(得分:2)
...有没有办法删除包含类
tumblr_blog
的锚的段落?
您可以使用:has()
选择器。
$('p:has(a.tumblr_blog)').remove();
为了获得更好的效果,请选择所有p
,然后使用has()
方法。
如果您没有jQuery,可以使用...
var allP = document.querySelectorAll('p');
Array.forEach(allP, function(p) {
if (p.querySelector('a.tumblr_blog').length) {
p.parentNode.removeChild(p);
}
});
所以它适用于Infinite Scroll插件,根据文档加载新内容时,将此代码添加到回调中。
答案 1 :(得分:0)
首先选择具有特定类的元素,然后删除其父元素。
<p>
:
<a class="tumblr_blog">...</a>
...
</p>
<script type="text/javascript">
$(document).ready(function() {
$('p a.tumblr_blog').parent().remove();
});
</script>
答案 2 :(得分:0)
或者您可以使用“普通”CSS选择器,然后使用.parent()
方法。
$("p a.tumblr_blog").parent().remove();
答案 3 :(得分:0)
document.querySelectorAll(“* [class~ ='className']”)将返回该类的所有节点的节点列表。然后遍历每个并使用.parentNode获取对其父级的引用,然后可以使用ref.parentNode.removeChild(ref)将其从.parentNode中删除;全部放在一起:
var nodesWithClass = document.querySelectorAll("*[class~='className']");
for (var i=0;i<nodesWithClass.length;i++)
{
nodesWithClass[i].parentNode.parentNode.removeChild(nodesWithClass[i].parentNode);
}