好吧,我不是一个新手,但这只是奇怪的。
我在这里有一个wordpress,想要添加一个评论框,当用户向下滚动到该框时,如果框是可见的,应该按ajax加载评论,这样我就可以保存性能而不需要加载评论每当有人请求页面时。
为实现这一目标,我将以下代码段添加到我的wp single.php帖子模板中:
<?php /** Begin Post Content **/ ?>
<?php the_content(); ?>
<?php wp_link_pages('before=<div class="pagination">'._r('Pages:').'&after=</div><br />'); ?>
<div id="vbcomments_box" style="display:visible">asd</div>
<?php print vb_comments_ajax($post); ?>
<?php /** Begin Tags **/ ?>
第4行和第5行来自我,它引入了一个带有id和随机内容的div#vbcomments_box。
之后,我调用一个函数将javascript代码注入到页面中(我知道这可能会更加漂亮,但出于开发目的,这将暂时保留。):
<script>
(function(){window.setInterval(function() {
console.log('the element is: ', $('#vbcomments_box'));
if($('#vbcomments_box').is(':visible')){
vbc_is_visible();
}
}, 1000);
// Function / event that will be started and stopped
function vbc_is_visible() {
alert('HALLO');
$("#vbcomments_box").html("LOADING...");
}
console.log("Inside script");})();
</script>
这只会设置一个计时器来测试选择器$('#vbcomments_box')。是(':visible')
会发生什么,$('#vbcomments_box')始终为空。我测试了一切。我把vbcomments_box改成了一个类,我在#之前添加了div,我试着按照document.getElementById查找它(幸运的是,我找不到它了)
那么为什么jquery不能找到这个简单的div元素,我10000%确定它存在于源代码中,并且在将div放入源代码后调用js的东西?
我做错了什么?
控制台说:
the element is: null (index):611
Uncaught TypeError: Cannot call method 'is' of null
答案 0 :(得分:1)
试试这个:
<?php the_content(); ?>
<?php wp_link_pages('before=<div class="pagination">'._r('Pages:').'&after=</div><br />'); ?>
<div id="vbcomments_box" style="display:visible;">asd</div>
<?php print vb_comments_ajax($post); ?>
<?php /** Begin Tags **/ ?>
...
<script>
(function(){window.setInterval(function() {
console.log('the element is: ', jQuery('#vbcomments_box'));
if(jQuery('#vbcomments_box').is(':visible')){
vbc_is_visible();
}
}, 1000);
// Function / event that will be started and stopped
function vbc_is_visible() {
alert('HALLO');
jQuery("#vbcomments_box").html("LOADING...");
}
console.log("Inside script");})();
</script>
答案 1 :(得分:1)