jquery родительский / дочерний селектор для подсчета <li> - PullRequest
4 голосов
/ 04 мая 2010

У меня есть этот кусок HTML

<div id="fileTreeInviati">
<ul class="php-file-tree">
    <li class="pft-directory">
        <a href="#" class="" name="101">A006 - SOMETEXT (<span name="contaNew"></span>)</a>
        <img src="./moduli/home/images/info.png" title="Informazioni Azienda" class="imgInfo"/>
            <ul style="display: none;">
               <li class="pft-file ext-png">
                    <a href="javascript:getInfoFile('4');" class="" id="4">cut.png</a>
               </li>
               <li class="pft-file ext-dll">
                    <a href="javascript:getInfoFile('27');" class="new" id="27">Safari.dll</a>      
               </li>
            </ul>
    </li>
    <li class="pft-directory">
        <a href="#" class="" name="102">A012 - SOMETEXT (<span name="contaNew"></span>)</a>
        <img src="./moduli/home/images/info.png" title="Informazioni Azienda" class="imgInfo"/>    
        <ul style="display: none;">
        <li class="pft-file ext-jpg">
            <a href="javascript:getInfoFile('19');" class="new" id="19">04.jpg</a>   
        </li>   
        <li class="pft-file ext-dll">
            <a href="javascript:getInfoFile('24');" class="new" id="24">Safari.dll</a>   
        </li>
      </ul>
    </li>
    <li class="pft-directory">
       <a href="#" class="" name="103">A014 - SOMETEXT (<span name="contaNew"></span>)</a>
         <img src="./moduli/home/images/info.png" title="Informazioni Azienda" class="imgInfo"/>    
       <ul style="display: none;">   
         <li class="pft-file ext-txt">
            <a href="javascript:getInfoFile('17');" class="new" id="17">acu.txt</a>   
             </li>   
         <li class="pft-file ext-dll">
              <a href="javascript:getInfoFile('22');" class="new" id="22">Safari.dll</a>  
         </li>
       </ul>
    </li>
</ul>

Я работаю над фрагментом js, который просматривает все "a" из "li" и проверяет, имеет ли он класс "new", если да, увеличивает счетчик на единицу. Этот счетчик теперь должен быть напечатан на относительном уровне «li» «span» 3 уровня раньше. Итак, у меня есть номер элемента с «новым» классом. Фрагмент JS это

$("#fileTreeInviati .php-file-tree .pft-directory li").each(function(){
$(this).children("a").each(function(i,e){
    if ($(e).hasClass("new")){
        cont++;
        console.log($(e).text());
        $(this).parent().parent().parent().children("a").children("span").text(cont);    
    }
})
cont = 0;

});

Я думаю, что я почти на месте, но счетчик всегда равен 1. Я думаю, что с детьми. Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Почему бы просто не использовать .length вместо этого?

$('#fileTreeInviati .php-file-tree .pft-directory li a.new').length;

Обновление: Если вы хотите подсчитать каждый элемент li отдельно, используйте это:

$('#fileTreeInviati .php-file-tree .pft-directory li').each(function() {
 alert($('a.new', this).length);
})
1 голос
/ 04 мая 2010

ОК, я понимаю, как сделать магию :) Вот оно:

cont = 0;
$('#fileTreeInviati .php-file-tree .pft-directory').each(function() {
    $(this).children("ul").children("li").children("a.new").each(function(i,e){
        cont++;
        $(e).parent().parent().parent().children("a").children("span").text(cont);  
    });
cont=0;    
});

Теперь все работает отлично. Если вы думаете, что это может сделать лучше, позвольте мне знать. Bye

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...