2010-02-25 3 views
1

Я быстро сделал эту функцию для сценария с использованием им:JQuery - IE возвращения 0 детей

$.fn.liCount = function(){ 
    var i=0; 
    $(this).children().each(function(){ 
     i++; 
    }); 
    return Number(i); 
} 

проблема является IE возвращает 0, Кто-нибудь знает почему?

alert($("ul").liCount()); 

редактировать:

<div id="prev-quotes"> 
    <ul id="quote-list"> 
     <li id="quote_content_wrapper" > 
      <ul> 
       <li class="quote_li"> 
        <span class="service_quote"><a href="#">Web Design Services</a></span> 
        <br> 
        <span class="cost_quote"><strong>£192</strong> - <a id="7" href="#">delete</a> | <a id="7" href="#">view</a></span> 
       </li> 
       <li class="quote_li"> 
        <span class="service_quote"><a href="#">Web Design Services</a></span> 
        <br> 
        <span class="cost_quote"><strong>£192</strong> - <a id="7" href="#">delete</a> | <a id="7" href="#">view</a></span> 
       </li> 
       <li class="quote_li"> 
        <span class="service_quote"><a href="#">Web Design Services</a></span> 
        <br> 
        <span class="cost_quote"><strong>£192</strong> - <a id="7" href="#">delete</a> | <a id="7" href="#">view</a></span> 
       </li> 
      </ul> 
     </li> 
     <li> 
      <a id="first-quote" href="#">Previous Quotes</a> 
      <img height="16" width="16" id="warning" src="images/for_web/check_mark.png"> 
     </li> 
    </ul>  
</div> 

ответ

1

Вы можете просто использовать

$("ul > li").length; 

См Child Selector (“parent > child”)

Если вы хотите, чтобы получить число li внутри ul с идентификатором quote-list, вы можете использование

$("#quote-list > li").length; 

Если вы хотите, чтобы получить число Ли с именами классов quote_li, вы можете использовать

$("#quote-list > li > ul > li.quote_li").length; 
+0

Благодарим вас также. –

+0

все еще не работает: element_delete.parents ('li: eq (0)'). Remove(); \t \t \t \t \t \t если ($ ("# цитата-лист> li> уль> li.quote_li"). Длина == 5) { \t \t \t \t \t \t \t $ ("# quote_content_wrapper"). CSS («высота», «авто»); \t \t \t \t \t \t} еще если ($ ("# цитата-лист> li> уль> li.quote_li"). Длина == 0) { \t \t \t \t \t \t \t $ ("# предупреждение") .attr ("src", "images/for_web/warning.png"); \t \t \t \t \t \t} –

0

Там нет необходимости использовать return Number(i);, когда вы уверены, i это число.

Вам вообще не нужен счетчик var - в jQuery есть .length.

Почему бы просто не использовать следующие вместо:

$.fn.liCount = function() { 
return $(this).children('li').length; 
}; 

Это короче, быстрее, более удобным для чтения, и it works in all browsers.

Однако, это кажется немного подробным или ненужным для написания «плагина» для этого. Вы можете просто использовать что-то вроде:

$('ul > li').length; 
+0

Все еще возвращает 0. –

+0

Можете ли вы предоставить нам HTML-код, который вы используете? Кроме того, о какой версии IE вы говорите? Какую версию jQuery вы используете? –

+0

последняя версия IE и jQuery –

0

В IE 7 и 8 необходимо определить ребенка тег

$.fn.liCount = function(){ 
    var i=0; 
    $(this).children("li").each(function(){ 
     i++; 
    }); 
    return Number(i); 
} 

будет работать. Конечно, это ограничивает применение метода, если вы не пройдете в элементе, который вы хотите посчитать, как ...

$.fn.liCount = function(elem){ 
     var i=0; 
     $(this).children(elem).each(function(){ 
      i++; 
     }); 
     return Number(i); 
    } 

затем вызвать

оповещения ($ («уль»). LiCount («Ли»));

Смежные вопросы