(это) не работает;приводит к «Uncaught TypeError:Невозможно прочитать «подстроку» свойства неопределенного значения»
-
23-12-2019 - |
Вопрос
У меня есть следующий код, который 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
будет правильным элементом.