ラベルをラジオにリンクするには、JS 変数を使用して維持する代わりに、GUID のような一意の ID を生成し、それを直接使用できます。
ブロックを削除するときは、ID を取得する必要はありません。ブロック内にある閉じた HTMLElement があるため、parent() 関数と remove() 関数を使用してジョブを実行できます。
次に例を示します。
/**
* Generate a guid part
*/
function GuidPart()
{
return Math.floor(Math.random() * 0x10000).toString(16);
}
/**
* Generate a new GUID
*/
function getGuid()
{
return (GuidPart() + GuidPart() + "-" +
GuidPart() + "-" +
GuidPart() + "-" +
GuidPart() + "-" +
GuidPart() + GuidPart() + GuidPart());
}
/**
* Build a new block with radio, label and close span
*/
function buildNewRadio(labelText)
{
// Retrieve a new guid
var guid = getGuid();
// Create a span container with the radio and label inside
// linked together by the guid
var container = $(document.createElement("span")).append(
$(document.createElement("input")).attr('id', guid),
$(document.createElement("label")).attr('for', guid).val(labelText))
.addClass("container");
// Finally append the close span (use to remove the entiere block)
container.append(
$(document.createElement("span").addClass("close")
.click(function(mouseEvent) {
// Retrieve the span container and remove it
$(this).parent().remove();
}));
return container;
}
buildNewRadio 関数を呼び出して、結果の HTMLElement を DOM コンテナーにアタッチできます。