方法“after”不适用于尚未在 DOM 中的元素
The method 'after' does not work with elements not yet in DOM
我想一个接一个地将两个HTML元素添加到Dom元素中。但是这个调用不适用于jQuery。
$("<button>click me</button>").after("<span> or be happy </span>")
.appendTo("#someId");
我无法将两个元素组合在一个字符串中的原因是我想向第一个元素添加一个事件处理程序。所以我真正想做的是:
$("<button>click me</button>").after("<span> or be happy </span>")
.on("click", function() {
// do something
});
现在,我的解决方法是为按钮分配一个 id,并在单独的 jQuery 调用中添加"span"。这样。。。
$('<button id="uid">click me</button>').on("click", function() {
// do something
});
$('#uid').after('<span> or be happy</span>');
有更好的方法吗?
只需在.append()
之后执行.after()
即可。
http://jsfiddle.net/Kr9m4/
$("<button>click me</button>").on("click", function() {
// do something
})
.appendTo("#someId")
.after("<span> or be happy </span>");
或者像这样:
http://jsfiddle.net/Kr9m4/1/
$("<button>", { text:"click me",
click: function() {
// do something
}})
.appendTo("#someId")
.after("<span> or be happy </span>");
那么你应该这样做:
var _button = $('<button>')
.text('click me')
.on('click', function () { }),
_span = $('<span>').text(' or be happy');
// not sure about the order, so just switch these two if ever
$('#foo').after(_button).after(_span);
编辑
根据文档,即使节点尚未断开连接,您实际上也可以插入 DOM 节点(并进行操作(。这假设jQuery 1.4+。
因此,如果您符合该法案,您应该能够在一个语句中完成所有这些操作:
$('<button>').text('click me')
.on('click', function () {
// ...
})
.after('<span>')
.text(' or be happy')
.appendTo('#uid')
;
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素