2011-09-18 142 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等等)