Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重构此代码以使用jQuery?_Javascript_Jquery - Fatal编程技术网

Javascript 如何重构此代码以使用jQuery?

Javascript 如何重构此代码以使用jQuery?,javascript,jquery,Javascript,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++){ e

如何重构此代码以使用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);
  }
}
附于:

var emleThis=result.snapshotItem(jj);

然后对
.evaluate()
函数找到的每个项执行。

主循环可以简化为

$("span.emleOnLoad").each(function() {
   var content = $(this).text();
   // do something with content
});

但整个想法需要重新思考。将javascript块存储在spans中,并在运行时对其进行求值-这很奇怪。

您不需要jQuery来实现这一点,但我会用以下内容替换此开关:

var lu = (function() {
   var TYPES = { // call it whatever you want
    'xhtml':'http://www.w3.org/1999/xhtml',
    'math': 'http://www.w3.org/1998/Math/MathML',
    'svg': 'http://www.w3.org/2000/svg'
  };
  return function luf(aPrefix){
    return TYPES[aPrefix] || '';
  };
})();
首先,我创建一个匿名函数并调用它,这样我就可以声明局部变量,否则
TYPES
将最终进入(大概)全局范围。然后我创建一个对象(map/hash),它像开关一样映射值。最后,创建另一个匿名函数,该函数在
类型中查找前缀,并默认为“”


其余的都搞砸了。

是的。extremelu很奇怪,但他说这是数学的东西,所以显示被评估的部分很可能是一个特性。危险的一点:)在这里使用eval没有任何好处。不管它是不是“数学素材”。只需要添加上下文节点,
aThis.document
。Eval是邪恶的!在使用eval时要非常小心,尤其是当您的源代码不可信时。当前的工作是使用jQuery重构Emle,此时已将LoC降低了30%。我已经在Emle项目中添加了Eval Is Evil blueprint:另一方面,如果源是可信的,那么Eval本身就没有问题。将问题的名称空间组件移动到:
var lu = (function() {
   var TYPES = { // call it whatever you want
    'xhtml':'http://www.w3.org/1999/xhtml',
    'math': 'http://www.w3.org/1998/Math/MathML',
    'svg': 'http://www.w3.org/2000/svg'
  };
  return function luf(aPrefix){
    return TYPES[aPrefix] || '';
  };
})();