2016-11-14 38 views
0

有什麼方法可以「屏蔽」屏幕上不可見的元素嗎?
我有一個很多divs的頁面,其中一些有附加的事件監聽器。 45k以上的事件處理程序運行速度非常慢,所以我認爲可能放棄不必要的元素會有所幫助?很多div在一個頁面上

僅供參考 - 當元素有display: none一切工作正常。

+6

出於興趣在一個HTML頁面上,哪些用例需要45k div? – niico

+0

你的意思是刪除DOM或只是隱藏它們?因爲如果你想刪除它們,繞過45k div的代碼也會減慢頁面的速度。 – 2016-11-14 15:01:09

+4

一種方法是實現某種分頁方式,以便您在頁面上不會有45k div。 –

回答

2

而不是添加45k的事件偵聽器,您應該添加一個事件偵聽器在父div上。

使用jQuery你可以做這樣的事情:

<div id="container"> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
    <div class="clickable">a</div> 
</div> 

$("#container").on('click', '.clickable', function(e) { 
    console.log($(e.target)); 
}) 

這應該會改善您的JavaScript代碼。

如果您仍然需要隱藏誰一個不可見的,你需要計算自己的位置元素,當你需要除以可能會降低性能自動

+3

使用'$(this)'而不是'$(e.target)'。 –

+0

@Teemu據我所知:http://api.jquery.com/on/在「直接和委託事件」下 – TryingToImprove

+0

「除了能夠處理尚未創建的後代元素上的事件之外,委託的另一個優點事件是他們潛在的低開銷,當許多元素必須被監控。「 但你的例子也是一樣的,但jQuery有內置的 – TryingToImprove

0

使用的div(這是div的應該是什麼用於)頁面的各個部分。例如來自內容的頁眉/頁腳,或博客上的單個帖子。

但是,你不應該在語義上使用它們,而其他元素是有意義的。雖然這不是重複的,但我認爲在這裏找到的信息對您有用。 Too Many DIVS?