用另一个jquery替换所有元素

时间:2013-11-09 07:02:32

标签: javascript jquery html dom

我编写了这个简单的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/

添加了评论

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()
})