我有一行JavaScript会在jQuery中导致语法错误:
$(document).find('.Container').replaceWith($(data).find('.Content'));
Run Code Online (Sandbox Code Playgroud)
如果代码本身无害,那么代码本身将从ajax调用中获取响应数据,以一些内部内容为目标,然后将该内容替换为容器div元素的内容。但是,当响应数据中有前导空格时,它将在jQuery中引起语法错误。
例如,以下剥离响应数据就可以了:
$("<!DOCTYPE html><html><head></head><body></body></html>")
Run Code Online (Sandbox Code Playgroud)
但是,对于前面的空格,相同的响应不是:
$(" <!DOCTYPE html><html><head></head><body></body></html>")
Run Code Online (Sandbox Code Playgroud)
并给出以下错误信息:
Syntax error, unrecognized expression: <!DOCTYPE html><html><head></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)
我猜想这可能与jQuery测试jQuery函数的参数($()是其别名)以区分不同的重载的方式有关。
我还注意到jQuery函数$.parseHTML()似乎可以应付前导空格,因为下面的代码行可以:
$.parseHTML(" <!DOCTYPE html><html><head></head><body></body></html>")
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否是jQuery的错误?还是只是简单的情况,该jQuery()函数要求它不应有前导空格。
顺便说一句jQuery的版本是1.9.1
更新**************************************************** ******************************************
感谢同事的提示,我发现这是一个实际的错误(尽管jQuery团队最初并未将其视为一个错误-请阅读注释)。看起来它已经/已经在jQuery 1.10 / 2.0中被“修复”。
这是因为当您使用 时$('<html>'),jquery 检查字符串中的第一个和最后一个字符。
因此,当您输入空格作为第一个字符时,jQuery 会尝试在 DOM 中获取元素,而不是解析 HTML。
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |