Я пытаюсь закрыть родительский контейнер, когда нажата внутренняя вложенная кнопка. В моем пользовательском интерфейсе - у меня есть много этих родительских контейнеров (я отображаю окна предварительного просмотра моего каталога продуктов на странице категории продуктов).
Как вы можете видеть из моей разметки ниже - кнопка ЗАКРЫТЬ глубоко вложена в DOM. Когда пользователь нажимает кнопку ЗАКРЫТЬ - мне нужно скрыть () родительский ящик-1. Имейте в виду, у меня может быть до 100 товаров, отображаемых на странице (100 коробок "Box-1") одновременно.
Моя разметка выглядит так:
<div class="box-1">
<div class="box-2">
<div class="box-3">...</div> <!-- end box-3 -->
<div class="box-4">
<div class="box-5">...</div> <!-- end box-5 -->
<a class="btn-close" href="#">CLOSE</a> <!-- this triggers the close event -->
</div> <!-- end box-4 -->
</div> <!-- end box-2 -->
<div class="box-6">
<div class="box-7">...</div> <!-- end box-7 -->
<div class="box-8">
...
<div class="box-9">...</div> <!-- end box-9 -->
</div> <!-- end box-8 -->
</div> <!-- end box-6 -->
</div> <!-- end box-1 -->
Мой вопрос - как мне лучше (и наиболее эффективно) пройти обратно DOM, чтобы овладеть «коробкой-1» и запустить метод .hide () ... вот мой существующий код.
<script>
$productsResultItems.delegate('.btn-close', 'click', function (e) {
//box-1
$(this).parents('div.box-1').hide(); // <-- is this the best way?????
e.preventDefault();
</script>
Первоначально я пытался это -
$this.parents().find('.hover-box-large').hide();
, который оказался очень медленным в IE7 и IE8.
Я обнаружил, что добавление дополнительных деталей к селектору улучшило производительность почти в 100 раз для IE7, но только в 4 раза быстрее в IE8 :( IE8 по-прежнему требуется около 200 мс, чтобы закрыть родительский контейнер. Где сейчас все другие браузеры (Chrome, Safari) , Firefox и IE7) закрывают контейнер менее чем за 20 мс.
$this.parents('div.hover-box-large').hide();
Но есть ли метод выбора, который еще лучше? Какая-то конкретная причина, почему IE8 слишком плох при таком типе восходящего обхода ??