0
我想實現,使用javascript和jquery(1.9.1),可選部分的概念。如何實現分層可選部分?
基本上,我有一個checkbox
,啓用或禁用整個部分(這是一個div
)。
在這裏,我有一個工作代碼:
<div class="optional">
<span class="optional-activator">
<input type="checkbox" ></input>
</span>
<div class="optional-section">
<input type="text" value="sometext" />
</div>
</div>
和腳本:
$(function() {
$(".optional").each(function() {
var $this = $(this);
var activator = $this.find(".optional-activator :input");
var section = $this.find(".optional-section");
var sectionStateUpdate = function() {
if (activator.prop('checked')) {
section.find(":input").prop("disabled", false);
section.removeClass("inactive");
} else {
section.find(":input").prop("disabled", true);
section.addClass("inactive");
}
};
activator.change(sectionStateUpdate);
sectionStateUpdate();
});
});
這是按預期工作。
但是,此代碼不支持嵌套的可選部分。當更高的可選部分被啓用時,整個input
後代也被啓用,而不涉及子部分中可能存在的情況。
例如,這個片段將不會達到預期效果:
<div class="optional">
<span class="optional-activator">
<input type="checkbox" />
</span>
<div class="optional-section">
<input type="text" value="sometext2" />
<div class="optional">
<span class="optional-activator">
<input type="checkbox" />
</span>
<div class="optional-section">
<input type="text" value="sometext3" />
</div>
</div>
</div>
</div>
我如何更新我的代碼來支持嵌套?
爲了更精確,規則是:
- 如果一個可選的部分被禁用,在部分中的所有輸入控件被禁用,即使它是在一個嵌套可選部分
- 如果一個可選部分是啓用所有直接輸入控制過啓用,但嵌套的可選部分必須體現出自己的激活
我寫這些片段爲jsfiddle code來說明我的行爲。
downvote時排除嵌套部分?請證明,如果我能改善我的問題 – 2013-02-21 08:16:55