Sibling + selector не работает в IE7 при использовании jQuery

Попытка выбрать элемент sibling с помощью jQuery, и он не работает в IE7.

Вот мой пример кода: http://jsfiddle.net/y7AHz/6/ (нажмите "Выполнить", чтобы увидеть результат)

var numberOfListItems = $("#txtInput + ul.ulContainer li").length;
$("#output").text(numberOfListItems);

В IE8, Firefox, Safari он работает (# из списка itmes выходит до 3).

3 ответа

Это известная ошибка с sizzle (механизм выбора под jQuery) в IE6 и 7. Вместо этого используйте .next(), который эквивалентно селектору + или next adjacent, и .find(). Это более подробный, но он работает в IE6 +:

var numberOfListItems = $("#txtInput").next(".ulContainer").find("li").length;

Обновлен jsFiddle


Это также будет работать в IE7:

var foo= $("#txtInput + ul.ulContainer");
var numberOfListItems = $('li', foo).length;
 $("#output").text(numberOfListItems);

Не уверен, какая из предложенных исправлений работает лучше всего, если это имеет значение...


попробуйте только это, он работает в ie7 также

var numberOfListItems = $("ul.ulContainer li").length;

licensed under cc by-sa 3.0 with attribution.