(das) funktioniert nicht;führt zu „Uncaught TypeError:Die Eigenschaft „Teilzeichenfolge“ von „undefiniert“ kann nicht gelesen werden.

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

Frage

Ich habe den folgenden Code, den Chrome Inspector mit dem Fehler „Uncaught TypeError“ debuggt:Die Eigenschaft „Teilzeichenfolge“ von „undefiniert“ kann nicht gelesen werden:

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

Ich bin mir ziemlich sicher, dass das Problem bei liegt (this), aber ich habe es richtig in einem anderen Skript mit verwendet .click und dieser Code funktioniert einwandfrei.

Ist es weil (this) Kann nicht verwendet werden .ready?Wenn ja, wie könnte ich diese Funktion mit alternativem Code zum Laufen bringen?

BEARBEITEN mit 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>
War es hilfreich?

Lösung

Das Problem ist, dass es sich um eine Dokument-Ready-Funktion handelt this verweist auf Dokument http://jsfiddle.net/IrvinDominin/J2r5V/

In diesem Fall können Sie keine haben article übergeordnetes Element des Dokuments, sodass Ihre Funktion den Fehler auslöst http://jsfiddle.net/IrvinDominin/J2r5V/1/.

Ich denke, du musst alles bekommen div Elemente nach Ihren Bedürfnissen hinzufügen und für jedes von ihnen die aktuelle Funktion ausführen;im Kontext des jeweiligen this wird das richtige Element sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top