2016-12-21 13 views
6

Mam skrypt jQuery, który wygląda przez liście div, a potem to dzieci, a drukuje się:

  1. Tytuł itemu
  2. opis elementu

problem mam zwrócić uwagę jest to, że choć oba console.log() s są obok siebie w wewnętrznej $.each(), ja się spodziewać:

Tytuł 1 Opis 1 Tytuł 2 Tytuł Opis 2 3 Opis 3 ... itd

Zamiast co widzę to:

Tytuł 1 Tytuł 2 Tytuł 3 .. etc
Opis 1 Opis 2 Opis 3 ... itd



zmieniane wewnętrzne .find() s:
SCRIPT.INI

$('.ghx-backlog').each(function(){ 
    $($(this).find('div[class*=has-issues]')).each(function(index){ 
     console.log($(this).find('.ghx-key > a').text()); //The Title 
     console.log($(this).find('.ghx-summary > span').text()); //The Description 
    }); 
}); 

znaczników:

<div id="ghx-backlog" class="ghx-backlog" data-rendered="123456789"> 
    <div class="ghx-issues js-issue-list ghx-has-issues"> 
     <div class="js-issue js-sortable js-parent-drag ghx-issue-compact ghx-type-6" data-issue-id="1233456" data-issue-key="Title 1"> 
      <div class="ghx-issue-content"> 
       <div class="ghx-row"> 
        <div class="ghx-key"> 
         <a href="/browse/Title 1" title="Title 1" class="js-key-link">XXXXXX-##</a> 
        </div> 
        <div class="ghx-summary" title="Description 1"> 
         <span class="ghx-inner">Description 1</span> 
        </div> 
       </div> 
       <div class="ghx-row"> 
        <div class="ghx-key"> 
         <a href="/browse/Title 2" title="Title 2" class="js-key-link">XXXXXX-##</a> 
        </div> 
        <div class="ghx-summary" title="Description 2"> 
         <span class="ghx-inner">Description 2</span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
+5

proszę pokazać nam kod HTML. –

Odpowiedz

4

problemu: jest z tego selektora $(this).find('div[class*=has-issues]') .you mieć wielokrotny title i mult iple Description z tym w środku. Ale obok jesteś po prostu robi $(this).find('.ghx-key > a').text() który wybierze wszystkie a tagi i staje się jego tekst, podobny problem dla Description

rozwiązanie: pętli elementu .ghx-row który jest w div[class*=has-issues].

zastąpić $(this).find('div[class*=has-issues]') z $(this).find('div[class*=has-issues] .ghx-row')

Dziala snippet poniżej. Również refaktoryzowałem twój kod, aby mieć string w selektorach zamiast Jquery Object.

$('.ghx-backlog').each(function(){ 
 
    $(this).find('div[class*=has-issues] .ghx-row').each(function(index){ 
 
     console.log($(this).find('.ghx-key > a').text()); //The Title 
 
     console.log($(this).find('.ghx-summary > span').text()); //The Description 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="ghx-backlog" class="ghx-backlog" data-rendered="123456789"> 
 
    <div class="ghx-issues js-issue-list ghx-has-issues"> 
 
    <div class="js-issue js-sortable js-parent-drag ghx-issue-compact ghx-type-6" data-issue-id="1233456" data-issue-key="Title 1"> 
 
     <div class="ghx-issue-content"> 
 
     <div class="ghx-row"> 
 
      <div class="ghx-key"> 
 
      <a href="/browse/Title 1" title="Title 1" class="js-key-link">XXX(1)XXX-##</a> 
 
      </div> 
 
      <div class="ghx-summary" title="Description 1"> 
 
      <span class="ghx-inner">Description 1</span> 
 
      </div> 
 
     </div> 
 
     <div class="ghx-row"> 
 
      <div class="ghx-key"> 
 
      <a href="/browse/Title 2" title="Title 1" class="js-key-link">XXX(2)XXX-##</a> 
 
      </div> 
 
      <div class="ghx-summary" title="Description 2"> 
 
      <span class="ghx-inner">Description 2</span> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>