var $eContainer = $('<div/>', { id: "eContainer", class: 'eList' }).appendTo($injectTo);
for (var i in navProps) {
var np = navProps[i];
var npName = np.name;
var npId = containerId + "_" + npName;
var $eLabel = $('<label />', { 'for': npId, text: npName }).appendTo($eContainer);
$('<input />', { type: 'checkbox', id: npId, value: npName }).prependTo($eLabel);
};
輸出
<label for="e_22">
<input type="checkbox" id="selectcolumn_16" value="22">Supplier<div id="eContainer" class="eList">
<label for="a">
<input type="checkbox" id="a" value="A">AAA</label>
<label for="b">
<input type="checkbox" id="b" value="B">BBB</label>
</div>
</label>
問題
-
它不關閉輸入標籤 - 當我試圖讓標籤的文本它返回所有子標籤的文本以及
守則第二個問題
// Event handler for adding labels.
this.$eList.on('click', ':input', $.proxy(function (event) {
var $e = $(event.target);
var selectedLabel = $e.parent().text();
// here it should return "Supplier" when I click on it, but it returns
// SupplierAAABBB -- which is WRONG
編輯
請不要」用硬代碼提供解決方案,因爲我需要使其動態工作,所以它一定需要從父代獲取它,會有幾個層次的這些di v程序和控制
在我看來,你的代碼是好的,但HTML可能不是你想要的。所有這些文字確實在該標籤中。也許你想將'div'移到標籤外面呢? – smarx
至於'input'標籤,它們不應該被「關閉」。在XHTML中,它們會自動關閉(''),但是在HTML中,它們是無效標記,看起來就像上面那樣('')。 – smarx
如果你希望'div'在'label'之後,而不是在裏面,可以試試'.insertAfter(...)'而不是'.appendTo(...)'。 – smarx