(esto) no funciona;da como resultado un “Error de tipo no detectado:No se puede leer la propiedad 'subcadena' de indefinido”

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

Pregunta

Tengo el siguiente código que Chrome Inspector depura con el error "Uncaught TypeError:No se puede leer la propiedad 'subcadena' de 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>

Estoy bastante seguro de que el problema está en (this), pero lo usé correctamente en un script diferente con .click y ese código funciona bien.

¿Es porque (this) no se puede usar en .ready?Si es así, ¿cómo podría hacer que esta función funcione con un código alternativo?

EDITAR con 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>
¿Fue útil?

Solución

El problema es que en la función de documento listo this puntos para documentar http://jsfiddle.net/IrvinDominin/J2r5V/

En este caso no puedes tener ninguno. article elemento principal del documento, por lo que su función genera el error http://jsfiddle.net/IrvinDominin/J2r5V/1/.

Creo que tienes que conseguir todos tus div elementos según sus necesidades, y para cada uno de ellos ejecutar la función actual;en el contexto de cada this será el elemento correcto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top