这段代码如何被重构为使用jQuery?这段代码如何被重构为使用jQuery?
function emleProcessOnLoad(aThis) {
var result = document.evaluate("//span[@class='emleOnLoad']",
aThis.document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var jj=0; jj<result.snapshotLength; jj++){
eval("var emleThis=result.snapshotItem(jj);" + result.snapshotItem(jj).textContent);
}
}
似乎有四个问题的jQuery解决:
- 语境:
aThis.document
- 选择:
//span[@class='emleOnLoad']
- 迭代:
for (var jj=0; jj<result.snapshotLength; jj++)
- 值:
.textContent
该代码是从Emle - Electronic Mathematics Laboratory Equipment JavaScript文件emle_lab.js的片段。
.evaluate()
函数抓取所有具有类emleOnLoad
的<span>
标签。所得到的文本内容包含一个表达式的片段,例如:
emleHandleInput(emleThis.parentNode.parentNode,"EMLE_CET_PROPER_FRACTION");
其被附加到:
var emleThis=result.snapshotItem(jj);
,然后由.evaluate()
函数找到的每个项目执行。
Eval是邪恶的!使用eval时要特别小心,特别是如果源不可信。 – 2010-03-28 14:03:57
目前的工作是用jQuery重构Emle,目前已经将LoC降低了30%。我已经将Eval-Is-Evil蓝图添加到Emle项目中:https://blueprints.launchpad.net/emle/+spec/eval-is-evil – 2010-03-29 03:00:16
另一方面,如果source *是* trusted,那么与eval没有任何内在的错误。 – noah 2010-03-29 18:19:47