Javascript 为什么jQuery';是否有不一致的回车输出?
下面的例子说明了这个问题:Javascript 为什么jQuery';是否有不一致的回车输出?,javascript,jquery,Javascript,Jquery,下面的例子说明了这个问题: $(“#ex1”)。追加(“\r”)//这一个工作正常 $(“#ex2”)。追加(“\n”)//这也如预期的那样起作用 $(“#ex3”)。追加(“\r\n”)//这也如预期的那样起作用 $(“#ex4”)。追加(“\r”)//这将替换为\r\n $(“#ex5”)。追加(“\r\n”)//这将完全删除\r\n $(“div”)。单击(“click”,function(){ 警报(JSON.stringify(this.innerHTML)); }); 单击下面的
$(“#ex1”)。追加(“\r”)//这一个工作正常
$(“#ex2”)。追加(“\n”)//这也如预期的那样起作用
$(“#ex3”)。追加(“\r\n”)//这也如预期的那样起作用
$(“#ex4”)。追加(“\r”)//这将替换为\r\n
$(“#ex5”)。追加(“\r\n”)//这将完全删除\r\n
$(“div”)。单击(“click”,function(){
警报(JSON.stringify(this.innerHTML));
});代码>
单击下面的div以查看结果。
R:
N:
注册护士:
R+El:
RN+El:
这不是jQuery的问题
我认为这是与javascript相关的浏览器问题
(即使用“\r”,其他使用“\n”。我在Chrome btw上进行了测试…)
您可以在警报窗口中看到完全相同的结果。
“\r”被忽略
$("#ex1").append("\r"); //This one works as expected
$("#ex2").append("\n"); //This also works as expected
$("#ex3").append("\r\n"); //This also works as expected
$("#ex4").append("\r <el></el>"); //This replaces \r with \n
$("#ex5").append("\r\n <el></el>"); //This removes \r completely
var text4 = "\r <el></el>";
var text5 = "\r\n <el></el>";
alert(text4); //check this
alert(text5); //and this
$("div").on("click", function () {
alert(JSON.stringify(this.innerHTML));
});
$(“#ex1”)。追加(“\r”)//这一个工作正常
$(“#ex2”)。追加(“\n”)//这也如预期的那样起作用
$(“#ex3”)。追加(“\r\n”)//这也如预期的那样起作用
$(“#ex4”)。追加(“\r”)//这将替换为\r\n
$(“#ex5”)。追加(“\r\n”)//这将完全删除\r\n
var text4=“\r”;
var text5=“\r\n”;
警报(文本4)//检查这个
警报(文本5)//还有这个
$(“div”)。在(“单击”)上,函数(){
警报(JSON.stringify(this.innerHTML));
});
您看到的是浏览器的功能-实际上与jQuery没有任何关系。@Pointy:这似乎不是真的。将最后两个转换为原始DOM调用,添加一个文本节点,然后添加一个元素,\r
将被保留(在Linux上的Chrome上),但如果您通过jQuery执行此操作,@T.J.Crowder啊,那么jQuery执行的“嗅探”来确定要追加的内容可能与此有关,可能吧。你想达到什么目的?\r
和\n
都是空白字符。jQuery在内部使用多个正则表达式来识别空白和换行符等,并执行类似于val.replace(rCRLF,“\r\n”)
的操作,以特定方法规范化内容,和rCRLF=/\r?\n/g
等。如果在不使用JSON.stringify
的情况下调用alert
,回车符将被视为空白字符。它还在那里,只是看不见。