私は個人的にお勧めします:
// 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 フィドルのデモ。
テキストに 2 つのチェックボックスが表示されるのを避けるために、( からのdiv
)チーム名をテキストとして使用する、わずかに変更されたバージョン:label
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 フィドルのデモ。
参考文献: