2012-10-04 16 views
0

我有一個頁面,我已經加載jquery的很多其他東西(即我已經招致加載jquery的開銷)。在JQuery頁面上,JQuery是一種更好的方式來顯示/隱藏一個元素而不是Javascript嗎?

考慮到這一點,是否存在顯示/隱藏元素的「正確」方式 - 這兩種方式中的哪一種比另一種更好或更高效?

JAVASCRIPT-ONLY:

document.getElementById('stuff').style.display = 'none'; 

JQUERY:

$jsjp('#stuff').css('display','block'); 

謝謝!

+0

JQery的優點是可用性比純javascript更舒適。 – reporter

回答

1

JavaScript將總是比jQuery更快,只是因爲jQuery(通常)至少引入了一個額外的調用層,否則本來可以是本地的。

但考慮,在你的問題,你會怎麼隱藏元素在原生JS的情況下至少:

foo.style.display = 'none'; 

相比,jQuery的:

foo.hide(); 

沒有太大的區別,除了角色數量之外,還有什麼可以繼續下去的。

現在,讓我們來反過來。你將如何去顯示foo回jQuery?

foo.show(); 

,並在原JS:

foo.style.display = 'block'; 

完成。也沒有太大的區別。

或者有嗎?花點時間考慮一下。我們在這裏的第一個問題確實是我們是如何走到那我們首先設置display = 'block'的假設。我們應該將foo設置爲塊顯示嗎?它不應該是inline而是?或者是inline-block

大多數時候,你就會有什麼用決定哪些使用下去,如果在關閉的機會,你這樣做,你可能寫了一些代碼的支持,以確保你沒有。

jQuery執行showhide的一個主要(經常被忽略的)好處是所有的跟蹤都是爲你默默地完成的。如果你在一個塊元素上調用.hide(),一旦你調用.show()就可以了,jQuery將把它重新設置爲block,而不是其他任何東西。

無論你決定繼續你的問題,請確保你也考慮到這一點。

+0

感謝您花時間給出描述 – Steve

1

香草的JavaScript總是比jQuery的速度更快,但隨着jQuery的的ID選擇使用本地getElementById功能,還有就是兩者之間沒有主要的區別,你也可以使用showhide方法:

$jsjp('#stuff').hide() 
+1

並不是最不重要的,你應該使用'.hide()',因爲當你調用'.show()'時,它會自動將'display'屬性設置爲它的原始值,而不是假設它是'block','inline '等。 – Alnitak

+0

@Alnitak是的,你是對的,這是一個很好的觀點。 – undefined

+0

這也縮短了我的jquery代碼中的字符 – Steve

1

我將使用$('#stuff').hide() | $('#stuff').show()而不是$('#stuff').css('display','none'); | $('#stuff').css('display','block');

+0

使用'display:block'連接到'.show()'函數;-) – reporter

+1

@reporter不正確。正如其他地方指出的那樣'show'將嘗試恢復_previous_顯示狀態,不一定是阻止。檢查源代碼中的'showHide'函數http://code.jquery.com/jquery-1.8.2.js – Ben

+0

@Ben記者指出,'.hide()'是'display:block'的_opposite_ – Alnitak

相關問題