我有以下代码,Chrome Inspector会调试错误" Uncaught TypeError:无法读取属性' substring'未定义":
<script type="text/javascript">
$(function countComments() {
var mcount = '//api.moot.it/postcounts?path=/forum/comments:' + $(this).closest('article').attr('id').substring(8);
$.getJSON(mcount, function(json) {
var results = $('.entry-actions');
$.each(json, function(key, val) {
results.prepend('<a class="entry-comments" href="{permalink}#comments" title="Comments">' + val['size'] + ' Comments</a>');
});
});
});
</script>
我非常确定问题出在(this)
,但我在.click
的其他脚本中正确使用了该代码并且代码运行正常。
是不是因为(this)
无法使用.ready
?如果是这样,我怎么能让这个函数使用替代代码?
使用HTML编辑
<article id="article-5344bff8e4b01730378236ff">
<header class="entry-header cf">
<p class="entry-actions"></p>
</header>
<div class="entry-title-wrapper">
BLOG CONTENTS
<div class="entry-injection">
<script type="text/javascript">
$(function countComments() {
var mcount = '//api.moot.it/postcounts?path=/forum/comments:' + $(this).closest('article').attr('id').substring(8);
$.getJSON(mcount, function(json) {
var results = $('.entry-actions');
$.each(json, function(key, val) {
results.prepend('<a class="entry-comments" href="{permalink}#comments" title="Comments">' + val['size'] + ' Comments</a>');
});
});
});
</script>
</div>
</div>
</article>
答案 0 :(得分:1)
问题是文档就绪函数this
指向文档http://jsfiddle.net/IrvinDominin/J2r5V/
在这种情况下,您不能拥有任何article
个文档的父元素,因此您的函数会引发错误http://jsfiddle.net/IrvinDominin/J2r5V/1/。
我认为你必须根据你的需要获得所有div
元素,并且每个元素执行当前函数;在每个this
的上下文中将是正确的元素。