我编写了这个简单的JS模块,用一个下拉元素替换了具有特定data
属性的所有元素。例如:如果我有这个:
<span class="testclass1 testclass2" data-what="itemBox"></span>
它将被下拉列表取代。一切正常,即如果只有一个span
,则<span class="testclass1 testclass2" data-what="itemBox"></span>
元素的转换正在完成,但如果我添加多个span
元素data-what="itemBox"
只有其中一个{ {1}}被替换而其他人则没有。这是我写的JS模块:
elements
任何人都可以告诉我代码有什么问题吗?为什么在编写替换所有元素的代码时只更换了一个元素?
JSFiddle Here:http://jsfiddle.net/DK2pe/1/
更新:为小提琴http://jsfiddle.net/DK2pe/2/
添加了评论答案 0 :(得分:2)
您需要为每次替换克隆newEl
。根据{{3}}
所选元素通过从旧位置移动而不是克隆来替换目标。
因此,请大致改变您的代码:
replaceAllWith : function(prevEls, newEl){
$(prevEls).each(function(index, elem){
$(elem).replaceWith(newEl.clone());
});
}
答案 1 :(得分:0)
尝试
$(prevEls).replaceWith(function(idx, el){
return $(el).clone()
})