(这)不起作用;导致“未捕获的TypeError:无法读取未定义的属性'子字符串'”

时间:2014-04-14 07:59:09

标签: javascript jquery html json squarespace

我有以下代码,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>

1 个答案:

答案 0 :(得分:1)

问题是文档就绪函数this指向文档http://jsfiddle.net/IrvinDominin/J2r5V/

在这种情况下,您不能拥有任何article个文档的父元素,因此您的函数会引发错误http://jsfiddle.net/IrvinDominin/J2r5V/1/

我认为你必须根据你的需要获得所有div元素,并且每个元素执行当前函数;在每个this的上下文中将是正确的元素。