我个人建议:
// creating new elements:
var newCheckbox = $('<input />', {
'type' : 'checkbox',
'name' : 'UKFootballClubs'
}),
newLabel = $('<label />');
wrapper = $('<div />').appendTo('body');
// iterating over each div that has a class:
$('div[class]').each(function(){
/* appending a cloned label element, with the text set to the class-name
of the current div element: */
newLabel.clone().text(this.className).appendTo(wrapper);
/* appending a clone of the new checkbox to the new label,
this allows a click on the label to un/select the checkbox: */
newCheckbox.clone().prependTo(wrapper.find('label').last());
});
JS 小提琴演示。
一个稍微改动的版本,它使用团队名称(来自div
)作为label
-text 以避免在prem
文本中有两个复选框:
var newCheckbox = $('<input />', {
'type' : 'checkbox',
'name' : 'UKFootballClubs'
}),
newLabel = $('<label />');
wrapper = $('<div />').appendTo('body');
$('div[class]').each(function(){
newLabel.clone().text($(this).text()).appendTo(wrapper);
newCheckbox.clone().prependTo(wrapper.find('label').last());
});
JS 小提琴演示。
但是,如果您更愿意使用类名(“prem”、“champ”等),那么您可以通过在使用该文本附加新元素之前检查是否存在包含该文本的元素来防止重复的复选框文本:
var newCheckbox = $('<input />', {
'type' : 'checkbox',
'name' : 'UKFootballClubs'
}),
newLabel = $('<label />');
wrapper = $('<div />').appendTo('body');
$('div[class]').each(function(){
var text = $.trim(this.className);
if (!wrapper.find('label:contains('+text+')').length) {
newLabel.clone().text(text).appendTo(wrapper);
newCheckbox.clone().prependTo(wrapper.find('label').last());
}
});
JS 小提琴演示。
参考: