(Questo) non funziona;Risultati in "Uncaught TypeError: non può leggere la proprietà" sottostringa "di indefinito"

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

Domanda

Ho il seguente codice che esegue il debug di ispettore Chrome con l'errore "Uncaught TypeError: impossibile leggere la proprietà" sottostringa "di undefined":

<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>
.

Sono abbastanza sicuro che il problema è con (this), ma l'ho usato correttamente in uno script diverso con .click e quel codice funziona bene.

è perché (this) non può essere utilizzato su .ready?Se è così, come potrei ottenere questa funzione per lavorare con il codice alternativo?

Modifica 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>
.

È stato utile?

Soluzione

Il problema è che nella funzione Document Ready Function this punti per documentare http://jsfiddle.net/irvininominin/j2r5v/

In questo caso non è possibile avere alcun elemento genitore article del documento, quindi la tua funzione solleva l'errore http://jsfiddle.net/irvininminin/j2r5v/1/ .

Penso che tu debba ottenere tutti i tuoi elementi div in base alle tue esigenze e per ciascuno di essi esegue la funzione corrente;Nel contesto di ciascun this sarà l'elemento corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top