(isso) não está a funcionar;resulta em "Uncaught TypeError:Não consegue ler a propriedade 'substring' indefinido"
-
23-12-2019 - |
Pergunta
Eu tenho o seguinte código que o google Chrome Inspector depura com o erro "Uncaught TypeError:Não consegue ler a propriedade 'substring' indefinido":
<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>
Tenho certeza de que o problema é com (this)
, mas eu usei ele corretamente em um script diferente com .click
e que o código funciona muito bem.
É porque (this)
não pode ser utilizado em .ready
?Se sim, como eu poderia obter esta função para trabalhar com código alternativo?
EDITAR com o 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>
Solução
O problema é que no documento pronto função this
aponta para o documento http://jsfiddle.net/IrvinDominin/J2r5V/
Neste caso, você não pode ter qualquer article
elemento principal do documento, para que sua função de elevar o erro http://jsfiddle.net/IrvinDominin/J2r5V/1/.
Eu acho que você tem que obter todos os seus div
elementos de acordo com suas necessidades, e para cada um deles executar a função atual;no contexto de cada this
será o elemento correto.