這段代碼如何被重構爲使用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