将所有元素替换为另一个 jquery
Replace all elements with another jquery
我编写了这个简单的JS模块,它将所有具有特定data
属性的元素替换为下拉元素。例如:如果我有这个:
<span class="testclass1 testclass2" data-what="itemBox"></span>
它将被下拉列表取代。一切正常,即从span
元素进行转换,以防只有一个<span class="testclass1 testclass2" data-what="itemBox"></span>
但是如果我添加多个span
元素data-what="itemBox"
这些元素中只有一个elements
被替换而其他元素没有。这是我编写的JS模块:
(function(){
var mould = {
partyBox : $.parseHTML('<select name="mouldedParty"><option value="-1" selected disabled>Select Party</option></select>'),
iBox : $.parseHTML('<select name="mouldedItem"><option value="-1" selected disabled>Select Item</option></select>'),
itemCSS : {
'padding' : '10px',
'border' : '1px solid #ccc',
'background' : 'whitesmoke',
'color' : '#2d2d2d',
'cursor' : 'pointer'
},
partyCSS : {
'padding' : '10px',
'border' : '1px solid #ccc',
'background' : '#368EE0',
'color' : 'white',
'cursor' : 'pointer'
},
init : function (){ },
process : function (container) {
mould.mouldParty(container);
mould.mouldItems(container);
},
mouldParty : function(container){
var pBox = $(mould.partyBox);
var pBoxes = $(container).find('[data-what=partyBox]');
pBox.css(mould.partyCSS);
mould.replaceAllWith(pBoxes, pBox);
},
mouldItems : function(container){
var iBox = $(mould.iBox);
var iBoxes = $(container).find('[data-what=itemBox]');
iBox.css(mould.itemCSS);
mould.replaceAllWith(iBoxes, iBox);
},
replaceAllWith : function(prevEls, newEl){
$(prevEls).each(function(index, elem){
$(elem).replaceWith(newEl);
});
}
};
mould.process('body');
})();
谁能告诉我代码有什么问题?为什么在我编写代码来替换所有元素时只替换一个元素?
JSFiddle 这里: http://jsfiddle.net/DK2pe/1/
更新:在小提琴 http://jsfiddle.net/DK2pe/2/中添加了评论
您需要为
每次替换克隆newEl
。根据 replaceWith
API 文档:
所选元素通过从其旧位置移动而不是通过克隆来替换目标。
因此,大致按如下方式更改代码:
replaceAllWith : function(prevEls, newEl){
$(prevEls).each(function(index, elem){
$(elem).replaceWith(newEl.clone());
});
}
尝试
$(prevEls).replaceWith(function(idx, el){
return $(el).clone()
})
相关文章:
- 如何从其中的另一个jquery脚本运行.load()
- 我们如何在jQuery Datatable调用结果中启动另一个jQuery插件,而不是页面就绪函数
- 如何将jQuery中某个函数的字符串作为参数返回给另一个jQuery函数
- 在简单模式中,取消单击时不会调用onClose事件..当我在simple-modal上加载另一个jquery对话框时
- 将所有元素替换为另一个 jquery
- 另一个jQuery滑块在悬停时暂停
- JQuery attr 选择器到字符串,存储为变量,然后传递到另一个 JQuery 选择器
- Jquery 库与另一个 jQuery 库冲突
- 将数据从一个页面传输到另一个jQuery Mobile
- 如何在基于另一个 jquery 日期选择器的 jquery 日期选择器中选择日期
- 为什么这两行 jquery 会淘汰另一个 jquery 元素的事件处理程序
- 如何搜索点击的元素src属性并将其添加到另一个jquery中
- 函数闭包中的另一个jQuery版本
- 检测另一个jquery函数对输入文本框的更改
- 在另一个jquery事件完成后播放声音
- 如何用另一个JQuery函数更新JQuery函数
- jQuery fileDownload与另一个jQuery插件冲突
- 添加另一个jQuery函数到AJAX调用或CSS解决方案
- 如何在另一个 jQuery 函数上调用 jQuery 函数
- 查找jQuery对象是否包含在另一个jQuery对象中