[英]Remove dynamically loaded content with jQuery
我想删除一些通过get_template_part();与wordpress循环一起添加的div元素。
结构是这样的:
<div id="level1" class="col-0-1 noPad">
get_template_part('new-story');
</div>
为了简化可读性,我已经删除了大部分循环。
模板部分的结构如下:
<div class="col-OuterContainer noPad">
stuff
</div>
因此,实际上它看起来像这样:
<div id="level1" class="col-0-1 noPad">
<div class="col-OuterContainer noPad">
stuff
</div>
</div>
我想检测是否有两个以上名为“ col-OuterContainer”的divz,然后在此之后删除divz。 我认为这很简单,并尝试了以下方法:
var num = $('.col-OuterContainer').length;
if (num > 2) {
$('#level1>div:gt(1)').remove();
}
目前,我目前有3个帖子,因此应该删除第三个帖子,但还没有。 我得到的console.log为3,所以它显然知道那里有3个元素,所以为什么不删除第三个元素呢?
更新:所以我在代码方面做了更多的尝试。
wp循环仍然相同:
<div id="level1" class="col-0-1 noPad">
get_template_part('new-story');
</div>
get_template_part中的代码是这样的:
<div class="col-OuterContainer noPad"><div>stuff 1</div></div>
JS是这样的:
jQuery(document).ready(function($){
console.log( $('.col-OuterContainer').length );
$('#level1 .noPad:gt(1)').remove();
});
我得到以下输出:
<div id="level1" class="col-0-1 noPad">
<div class="col-OuterContainer noPad"><div>stuff 1</div></div>
<div class="col-OuterContainer noPad"><div>stuff 1</div></div>
<div class="col-OuterContainer noPad"><div>stuff 1</div></div>
</div>
控制台显示3个元素,但是即使我定位到noPad或.col-OuterContainer也不会删除第三个元素。
修改jQuery选择器以:
<script>
$('#level1 .noPad:gt(1)').remove();
//Or
$(document).find('#level1 .noPad:qt(1)').remove();
</script>
小提琴 : http : //jsfiddle.net/K5Q3B/6/
在引入更多<div>
之前,您的前一个选择器失败之后对此进行了调整(请参见示例Fiddle )。 或者,您可以尝试此人在另一个SO问题中提出的建议:
<script>
$('#level1 .noPad').slice(3).remove();
</script>
<div>
的 <script>
$.ajax({
.. //Other Opts
success: function( data ) {
$('#somediv').html( data );
var NodesToRemove = $(document).find('#level1 > div:gt(1)');
//Or $('#somediv').find('#level1 .noPad:qt(1)').remove();
NodesToRemove.remove();
});
});
</script>
就像其他评论中提到的那样,最好在PHP中阻止它-那么您根本不需要考虑使用任何JavaScript来删除任何<div>
,
$Counter = 0;
if ( have_posts() ) {
while ( have_posts() ) {
$Counter++;
the_post();
if ( $Counter <= 2 )
get_template_part('new-story');
}
}
此外,您可以重写PHP以使其具有AJAX条件,
$Counter = 0;
$isAjax = ( isset( $_GET["ajax"] ) && $_GET["ajax"] == 'true' ? true : false );
if ( have_posts() ) {
while ( have_posts() ) {
$Counter++;
the_post();
if ( !$isAjax || ( $isAjax && $Counter <= 2 ))
get_template_part('new-story');
}
}
var num = $('.col-OuterContainer').length;
这将为您提供整个文档中类col-OuterContainer
的div
数量。
$('#level1>div:gt(1)') { ...
该选择器仅计算div
,它们是#level1
节点的直接子#level1
。
您在页面上的其他位置是否具有.col-OuterContainer
,或嵌套在#level1
节点的更深处?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.