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