2011-09-18 105 views
1

這兩種說法有什麼區別?這兩個陳述有什麼區別?

答:

$(document.getElementById('timer-' + endTimes[i].nid)).removeClass('hidden-timer').text(''); 

B:

$('#timer-' + endTimes[i].nid).removeClass('hidden-timer').text(''); 

[編輯]

感謝您的所有反應。

endTimes[i].nid是數字,前340

對我來說最重要的區別是A線引起WSOD,但B線正常工作。

+4

幾乎沒有什麼,B會立即發現你正在查找id並執行document.getElementById然後其他一切都是一樣的。 – evan

+0

使用您的DOM檢查器來比較每種方法的最終結果。 –

回答

5

都做同樣的,不同之處在於選擇器可亂用特殊字符:http://jsfiddle.net/pimvdb/Mwrpb/

var id = "a:b"; 

$(document.getElementById('timer-' + id)).text('abc'); 
// works, 'timer-a:b' means an id of 'timer-a:b' here 

$('#timer-' + id).text('def'); 
// won't work: '#timer-a:b' means an id of 'timer-a' with pseudo class 'b' here 
+0

+1這是一個有價值的觀點(jquery使用:作爲名稱的objecttypes過濾器)。 – Independent

0

第一個是使用DOM方法來識別具有給定ID的元素。第二個是使用jQuery的方式。第二個在這裏更好,我甚至不確定第一個會起作用。

+1

他們* * jQuery。一個通過DOM;另一個是直接的jQuery。 – paulsm4

1

它們都是jQuery(DOM上面的一層,上面的Javascript),它們都是等價的。

0

實際上什麼都沒有。

第一個將DOM節點傳遞給jQuery選擇器並構建一個jQuery對象。

第二條指示jQuery通過元素ID構建一個jQuery對象。

爲簡潔起見,請使用第二個。

0

答:document.getElementById('timer')是一個正常的Javascript方法,您不需要JQuery。

B:$('#timer')是JQuery的簡寫document.getElementById('timer')

如果你打算使用jQuery,我建議使用選項B.

+1

我不完全同意你的第二點。 '$'方式返回一個jQuery對象,而'document.getElementById'返回一個DOM元素。 – pimvdb

0

JQuery的, 你並不需要指定的document.getElementById堅持。 Jquery在那裏爲你做這件事。如果你需要通過純JavaScript獲取對象,你必須使用document.getElementById(getElementByName等等)