<div id="TabTemplate" style="display: none;">
<span id="tab_radios">
<input type="radio" id="tab_l1" name="layout"/>
<label for="tab_l1">1</label>
<input type="radio" id="tab_l2" name="layout" checked="checked" />
<label for="tab_l2">2</label>
</span>
</div>
<div id="RealTab">
</div>
function replaceAll(find, replace, str) {
return str.replace(new RegExp(find, 'g'), replace);
}
// copy tab_radios's html from TabTemplate to RealTab
$('#RealTab').html(replaceAll('tab_', 'tab1_', $('#TabTemplate').html()));
$('#tab1_radios').buttonset();
$('#tab1_radios :input').change(function() { alert("click"); });
フィドルを参照してください(はるかに大きなコードから単純化されています)
私の HTML には、ラジオ ボタンを含む非表示の TemplateTab div と空の RealTab div が含まれています。
まず、内側の HTML を TemplateTab から RealTab にコピーし、ID ラベルなどのすべての tab_ を tab1_ に置き換えます。
次に、tab1_radios で buttonset() を呼び出し、変更イベントをアタッチします。
ただし、ボタンをクリックすると、「初期化前にボタンでメソッドを呼び出すことができません」という JQuery 例外が発生します - なぜ??
buttonset() 呼び出しを削除すると、イベントを適切に処理する (醜い) ラジオ ボタンが生成されることに注意してください。
ありがとうございました !