我被告知,通过getElementByID或jQuery(“标记名”)获取元素被视为“黑客”。
这个论点是没有编译的,因此可能需要很长时间才能找到一个愚蠢的拼写错误。
或者一个更好的论据:当某个元素id改变时,重构所有内容需要很长时间。
有什么理由反对这种“黑客”论调?
有什么好的解决办法吗?

最佳答案

嗯。首先,我要说getElementById是一个标准的dom函数。而且,我认为getElementByIdgetElementsByClassName快得多,然后循环查找您想要的那个。也许他们指的是对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,而“重构”你的代码需要改变一个字符串…

09-11 19:08
查看更多