jQuery删除包含___类的另一个元素的元素

时间:2012-02-08 00:49:34

标签: javascript jquery tumblr

我已经找了几天,但我找不到解决这个问题的方法。它可能非常明显,但有没有办法删除包含另一个元素的元素?在这种情况下,我想删除包含类“tumblr_blog”的锚的<p>元素。我会使用:contains,但默认情况下段落包含一个没有类的冒号,而段落元素没有类,那么有没有办法删除包含tumblr_blog类的锚点的段落?此脚本还应删除段落中的:尽管它没有类。如果有人能帮助我,它真的会让我的夜晚。谢谢!

编辑:谢谢亚历克斯!最后一点,它适用于第一页,但是当Paul Irish通过无限滚动功能加载新元素时,代码不再有效,因为加载了新页面而没有刷新。这是我的代码,有没有办法在加载的新元素上实现代码?

<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>

4 个答案:

答案 0 :(得分:2)

  

...有没有办法删除包含类tumblr_blog的锚的段落?

您可以使用:has()选择器。

$('p:has(a.tumblr_blog)').remove();

jsFiddle

为了获得更好的效果,请选择所有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);
}