(это) не работает;приводит к «Uncaught TypeError:Невозможно прочитать «подстроку» свойства неопределенного значения»

StackOverflow https://stackoverflow.com//questions/23054906

Вопрос

У меня есть следующий код, который Chrome Inspector отлаживает с ошибкой «Uncaught TypeError:Невозможно прочитать свойство «подстрока» неопределенного значения»:

<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>
Это было полезно?

Решение

Проблема в том, что в функции готовности документа this указывает на документ http://jsfiddle.net/IrvinDominin/J2r5V/

В этом случае у вас не может быть никаких article родительский элемент документа, поэтому ваша функция вызывает ошибку http://jsfiddle.net/IrvinDominin/J2r5V/1/.

Я думаю, ты должен получить все свои div элементы в соответствии с вашими потребностями и для каждого из них выполнить текущую функцию;в контексте каждого this будет правильным элементом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top