jQuery在另一个HTML元素内生成HTML元素
jQuery generated HTML element inside another HTML element
只是想知道如何使用jQuery将一个元素用作另一个元素的文本。下面是我的代码:
$("<a/>", {
"class": "test",
text: $("<span/>", {
"class": "label",
text: "My Label"
}),
click: function(){
console.log('clicked');
}
}).appendTo('#label_list');
输出:<a class="test"></a>
span:
使用.html()时的输出<a class="test">My Label</a>
所需输出:<a class="test"><span class="label">My Label</span></a>
设置元素的text
与设置元素的html
有很大的不同。text
本质上是由元素立即包含的字符数据,不包括任何嵌套的标签。所以试图把html标签在text
不完成任何事情。您可以将html
设置为在<a>
中嵌套<span>
,而不是像您那样直接设置text
或html
,实现您想要的功能的更符合jquery习惯的方法如下:
$("<a/>").addClass("test")
.click(function() {
console.log("click!");
})
.append($("<span/>").addClass("label")
.text("my label")
);
或者如果你坚持使用html
,你可以这样做:
$("<a/>").addClass("test")
.click(function() {
console.log("click!");
})
.html('<span class="label">my label</span>');
编辑:另外,当您设置text
或html
时,您需要将其设置为字符串。您的示例代码没有做任何事情,因为您没有使用字符串,您正在使用$(...)
,这是一个非字符串对象(jQuery对象)。
另外,有关text
和html
之间的更多区别(以及它们必须是字符串的事实),请参阅jQuery文档的这些页面:
- http://api.jquery.com/text/
- http://api.jquery.com/html/
如果你需要使用变量,你可以这样使用:
$('<a><span></span></a>')
.addClass('test')
.click(function...)
.find('span')
.addClass('label')
.text('my label')
.end()
.appendTo('#label_list');
但是如果你只是想生成HTML, jQuery足够聪明,可以创建HTML片段。
$('<a class="test"><span class="label">My Label</span></a>').appendTo('#label_list');
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML