我被告知,通过getElementByID或jQuery(“标记名”)获取元素被视为“黑客”。
这个论点是没有编译的,因此可能需要很长时间才能找到一个愚蠢的拼写错误。
或者一个更好的论据:当某个元素id改变时,重构所有内容需要很长时间。
有什么理由反对这种“黑客”论调?
有什么好的解决办法吗?
最佳答案
嗯。首先,我要说getElementById
是一个标准的dom函数。而且,我认为getElementById
比getElementsByClassName
快得多,然后循环查找您想要的那个。也许他们指的是对id进行硬编码,比如如果脚本中有很多地方写着$("#element-id")
,那么可以用一个名为eid的变量替换“element id”,并动态地设置它。
当然,我必须说这不是黑客,我不确定是谁想的。举个简单的例子:
<form id='my-form-name'>
<input id='input-text' ... />
...
</form>
我认为
document.forms[0]
比$('#my-form-name')
更糟糕。能够说$('#my-form-name #input-text')
比document.forms[0].children[0]
或其他任何东西都好。最后,你可以做:
var $someElement = $('#el-id');
这样你只需要在一个地方硬编码ID,而“重构”你的代码需要改变一个字符串…