我编写了这段代码来用下拉列表替换具有特定数据属性的页面的所有元素。假设我有:
<span data-what="partyBox"></span>
它将被一个下拉列表替换。该代码运行良好,但有一个例外;稍后我想分配当前标签的所有属性(例如所有数据属性或任何其他分配的属性),即span
在这种情况下将标签分配给我创建的下拉列表。但是我在实现这一点时遇到了问题,即它没有将所有这些属性都应用到下拉列表中。这是我的代码:
var mould = {
partyBox : $.parseHTML('<select name="mouldedParty"><option value="-1" selected disabled>Select Party</option></select>'),
init : function (){ },
process : function (container) {
var pBox = $(mould.partyBox);
var pBoxes = $(container).find('[data-what=partyBox]');
pBox.css({
'padding' : '10px',
'border' : '1px solid #ccc',
'background' : '#368EE0',
'color' : 'white',
'cursor' : 'pointer'
});
$(pBoxes).each(function(index, elem){
var attributes = elem.attributes;
var test = $(elem).replaceWith(pBox);
test.attributes = attributes;
});
// pBoxes.replaceWith(pBox);
}
};
mould.process('body');
谁能告诉我这段代码有什么问题?为什么它不将 span 标签的所有属性都应用到下拉列表中,尽管我已经使用这些行进行替换
var attributes = elem.attributes;
var test = $(elem).replaceWith(pBox);
test.attributes = attributes;