. replacewith()在jQuery 1.9+中不能工作
.replaceWith() is not working in jQuery 1.9+
我试图克隆<textarea>
并克隆并替换标签<label> Number 1 <label>
中的数字,每次按下添加按钮时增加1(因此第一个标签将具有1号,2号下面的标签等)。
这适用于jQuery 1.8及以下版本,但上面的任何内容都不会克隆并添加1到数字。
HTML<div>
<label for="number">Number <span class="one">1</span></label>
<textarea id="number"></textarea>
</div>
<button>Add</button>
jQuery var $row = $('div').clone(),
cloneCount = 2;
$('button').click(function () {
$row.clone().insertBefore($("button"));
$('span').clone().attr('span', cloneCount++).replaceWith($('[class=one]:last')).text(cloneCount - 1);
});
JSFIDDLE: http://jsfiddle.net/wba6jvkj/
我不知道你试图用.attr('span'
做什么,为什么它似乎在<1.8,或者为什么要从cloneCount
中减去一个,但这应该是您想要的:
var $row = $('div').clone(),
cloneCount = 2;
$('button').click(function () {
$row.clone().insertBefore($("button"));
$('span.one:last').text(cloneCount++);
});
<<p> jsFiddle例子/strong> (回答这个老问题,因为谷歌把我带到这里。)
在jQuery 1.9中修改了节点断开连接的.replacewith()
的行为。您可以在replaceWith()文档("附加说明"一节)和jQuery 1.9升级指南中找到以下解释:
在jQuery 1.9之前,如果第一个节点没有连接到文档,
.replaceWith()
将尝试添加或更改当前jQuery集中的节点,并且在这些情况下返回一个新的jQuery集而不是原始集。该方法可能返回也可能没有返回新结果,这取决于其参数的数量或连通性!从jQuery 1.9开始,.after()
、.before()
和.replaceWith()
总是返回原始的未修改集合。尝试在没有父节点的节点上使用这些方法是没有效果的——也就是说,集合和它包含的节点都不会改变。
在您的代码中,您正在克隆元素上使用.replaceWith()
,因此它尚未插入DOM。
相关文章:
- 用javascript将script元素附加到头部;铬不能工作
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 引导程序's的javascript在本地工作,但在部署到服务器时不能工作
- JQuery脚本没有'Don’我不能工作两次
- "npm运行构建:css"不能工作,而当我自己运行脚本时是可以的
- ng样式在与的预标记中!重要的是不能工作
- angularjs 控制器在指令中使用控制器作为不能工作
- jQuery LightSlider不能工作,但在JSFiddle中工作得很好
- Javascript - 我如何让一个语句工作一次,如果它已经工作了 1 次,则不能工作,然后再次工作
- 我的查询获胜'因为一个剧本,它不能工作(它以错误的方式工作)!?但为什么呢?SESSIONS和PHP
- 我的Javascript代码没有'铬不能工作
- 使用JQuery调整图像大小和重新排列图像;第一次装载时不能工作
- 为什么不是'这个Javascript计算器不能工作
- Javascript在窗口中返回.onbeforeunload不会'铬不能工作
- Javascript代码包含在html中时可以工作,但单独加载/注入时则不能工作
- 简单的jquery选择器不会;铬不能工作
- 为什么不'这个Javascript函数不能工作
- 为什么不'这个js数组函数不能工作
- 视口比例;方向改变后不能工作