EDIT:
Редактирование ответа ниже, чтобы добавить исправление проблемы:
$("#id8").nextAll().remove();
END EDIT.
Ok. Это кажется интересной ошибкой - первоначальное тестирование указывает на то, что это ошибка jquery, хотя я нигде не нашел конкретного упоминания о ней.
Ошибка, по-видимому, заключается в том, что если ваш начальный тег селектора того же типа, что и его братья и сестры, то он не сможет вернуть никаких братьев и сестер в IE7.
Я протестировал его, используя пример кода jQuery для самого селектора, и смог дублировать вашу проблему в IE8, эмулируя IE7.
Если вы посмотрите пример кода jquery, который я добавлю ниже, вы увидите, что фактический элемент, который они используют в качестве начального селектора, - это span
, а все родственные элементы - divs
, что, как мне кажется, указывает они знают об этой ошибке и не документировали ее, что является одновременно хитрым и дерьмовым.
<script>
$(document).ready(function(){
$("#prev ~ div").css("border", "3px groove blue");
});
</script>
<div>div (doesn't match since before #prev)</div>
<span id="prev">span#prev</span>
<div>div sibling</div>
<div>div sibling <div id="small">div niece</div></div>
<span>span sibling (not div)</span>
<div>div sibling</div>
Измените #prev span
на div
, и вы получите ту же ошибку, что и в настоящее время. Я бы отправил сообщение об ошибке команде jquery.