我試圖在單擊內部嵌套按鈕時關閉父容器。在我的UI中 - 我有許多這些父容器(我在產品類別頁面上呈現了我的產品目錄的預覽窗口)。在jQuery中遍歷起來的最有效的方法是什麼
正如您從下面的標記中可以看到的,CLOSE按鈕深深嵌套在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的速度很慢。我發現在選擇器中增加了更多的細節IE7的性能提高了近100倍,但IE8的速度只有4倍:IE8仍然需要大約200ms來關閉父容器,現在所有其他瀏覽器(Chrome, Safari瀏覽器,Firefox和IE7)關閉容器小於20ms。
$this.parents('div.hover-box-large').hide();
但是有沒有是更好的選擇方法?有什麼特別的原因,IE8是SOOOO壞在這種類型的向上穿越的?
民間 - 所有三個答案都是正確的。當他/她第一次來的時候,我被授予了正確的答案。感謝大家的幫助。使用'最接近'是一個很好的建議。它削減了一半的IE8渲染時間! – rsturim 2011-06-06 18:19:39