data-
これをアーカイブするために、いくつかのカスタム属性にhtml5 属性を使用しています。
html:
<input type="checkbox" data-dependid="test" />
<input type="text" data-dependid="test2" data-dependedid="test" data-dependedvalue="true" data-dependedtype="disabled" disabled="disabled" />
<input type="text" data-dependedid="test2" data-dependedvalue="input" data-dependedtype="disabled" disabled="disabled" />
jQuery:
$(function() {
$("[data-dependid]").die().live("change keyup", function () {
var that = this;
var depends = $("[data-dependedid='" + $(that).attr("data-dependid") + "']");
depends.each(function (i, depend) {
var isSame = false;
if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) {
isSame = true;
}
$(depend).attr($(depend).attr("data-dependedtype"), !isSame); //works for checked and disabled
});
});
});
これにより、最初のテキストボックスがチェックボックスに依存するようになりました。
2 番目のテキスト ボックスは、最初の値 (入力) に依存していました。
このフィドルを参照してください
表示オプションを追加するには、これを foreach に追加します。
var isSame = false;
if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) {
isSame = true;
}
if ($(depend).attr("data-dependendtype") == "display") {
if (!isSame)
$(depend).fadeOut();
else
$(depend).fadeIn();
}
else {
$(depend).attr($(depend).attr("data-dependedtype"), !isSame);
}