这里的代码没有返回预期的内容:
jQuery('<div>Look here: [ jQuery0="null" ]</div>').html()
Run Code Online (Sandbox Code Playgroud)
相反,你得到:
Look here: [ ]
Run Code Online (Sandbox Code Playgroud)
有问题的jQuery源代码:
html: function( value ) {
return value === undefined ?
(this[0] ?
this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
null) :
this.empty().append( value );
},
Run Code Online (Sandbox Code Playgroud)
这背后的动机是.replace
什么?我没有时间来讨论jQuery的其余部分,但这样的代码让我想知道我是否应该在生产中使用jQuery.
bob*_*nce 11
.replace背后的动机是什么?
隐藏jQuery用于内部目的的属性.
像这样的代码让我想知道我是否应该在生产中使用jQuery.
是的,我有完全相同的反应.这真是令人难以置信的草率.试图用regexp处理HTML是你期望从第一次问题海报那种天真的黑客,而不是你希望在框架中看到的那种行为,这么多SO用户似乎崇拜.
通过尝试用正则表达式解析标记,这不是jQuery跳起来的唯一地方; 一些选择器的东西也被破坏了.这些可能是不起眼的角落情况,但对我来说这是一个巨大的红旗,表明错误的方法.
此代码是 1.3.2 中新增的代码,1.3.1 中没有。在我看来,jQuery 使用名称以“jQuery”开头的属性来存储元素上的数据,这是当您请求 html 返回时不向您公开数据的方式。
这显然不是一个错误。作者打算在返回字符串之前删除该 HTML。
这会影响您的代码吗?与任何库一样,您应该在部署生产代码之前对其进行彻底测试。
归档时间: |
|
查看次数: |
934 次 |
最近记录: |