jQuery $()构造函数和以反斜杠开头的字符串
jQuery $() constructor and strings with a leading backslash
请看下面的代码:http://jsfiddle.net/Bkdgr/1/
它不工作。但是,以下两个修改中的任何一个都可以使其正常工作:
在append
中传递纯newItem
字符串,而不是用$()
包装它:
$('button').on('click', function(e){
e.preventDefault();
var newItem = ''
<li>Hello, '
World!</li>';
$('ul').append(newItem);
});
将开始的<li>
标记向上移动到字符串定义的第一行:
$('button').on('click', function(e){
e.preventDefault();
var newItem = '<li>Hello, '
World!</li>';
$('ul').append($(newItem));
});
当我将<li>
移动到与前导'
(但不删除'
)相同的行时,它也不起作用。
对我来说,$()
构造函数似乎在字符串定义的前导'
方面有一些问题。传递纯字符串(没有$()
包装器)到append
似乎不会引起任何问题。
为什么会这样呢?在$()
中,斜杠有什么特殊的含义吗?
html字符串被jQuery与$()
解析不能有前导空格或换行/返回字符,甚至只是纯文本。这在api中有记录。
http://api.jquery.com/jQuery/jQuery2
如果是HTML字符串,它必须以HTML标记开头。.append()
和.html()
没有那么严格,因为传入的字符串不能被解析为css选择器。
您需要决定是否要使用$()作为构造函数。如果是这样,您需要提供标记作为字符串中的第一个元素。它还检查关闭标记,并在需要时添加它。如果你需要你的代码工作,只要不使用构造函数,如果你提供自定义的HTML代码:$('ul').append(newItem)
.
也可以这样分割:
$('button').on('click', function(e){
e.preventDefault();
var newItem = ''
Hello, '
World!';
$("<li>").html(newItem).appendTo("ul");
});
你需要使用jQuery而不是反对它:)
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 需要javascript正则表达式来检查以U或C开头、长度为10的字符串
- 如何删除字符串开头和结尾的换行符
- 用于删除字符串中字符开头到结尾的正则表达式
- Javascript - 如何使用 .indexOf 而不是开头查找特定字符串
- 字符串替换正则表达式,开头为空格
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- 我可以配置默认的角度过滤器以显示字符串,以便以搜索词开头的字符串排在第一位
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 从结尾或开头修剪字符串
- 验证模式中的HTML5不适用于以一些特定字符开头的字符串
- 我可以选择所有属性名称(而不是值)以某个字符串开头的元素吗
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在jquery中选择id以字符串开头的元素
- 设置小写字符串的格式,使每个句子的开头都大写
- 获取DOM中属性名称以某个字符串开头的所有HTML元素
- 如何匹配字符串开头的数字
- 在数组中查找颜色值(以#开头的字符串)
- 在字符串的开头和结尾搜索相同的数字