$('select')
- を使用document.getElementsByTagName
し、返されたリストをループします
.change(function() {…}
-ブラウザの違いについては、高度なイベント登録モデルを確認してください
$(this).val()
-単にthis.value
; jQueryでもこれを使用する必要があります
$(this).parent().parent()
-parentNode
要素の取得 (2 回)
.find("input.hidden")
- これは少し難しいです。[ ]を使用できますが、レガシー ブラウザーでは機能しません。jQuery は、そのクロスブラウザー セレクター エンジンに多くの機能を追加します。クロスブラウザーで動作する入力要素を取得するには、別の方法を使用できます。javascript document.getElementsByClassName と IE との互換性に沿って何かを試すことができます。.querySelector
All
.show()
display:none;
-ビアを削除するだけel.style.display = "";
です。ところで、インライン スタイルで上書きするのではなく、単にクラスを削除したい場合があります :-)hidden
W3 準拠のブラウザー向けの本物のバニラ:
[].each.call(document.getElementsByTagName('select'), function(select) {
select.addEventListener("change", function(e) {
if (this.value == "Other (please specify)") {
var inputs = this.parentNode.parentNode.querySelectorAll("input.hidden");
for (var i=0; i<inputs.length; i++)
inputs[i].classList.remove("hidden");
}
}, false);
});
これは古いブラウザでも動作するはずです:
(function(selects, handler) {
if (document.addEventListener)
for (var i=0; i<selects.length; i++)
selects[i].addEventListener("change", handler, false);
else
for (var i=0; i<selects.length; i++)
selects[i].attachEvent("onchange", handler);
})(document.getElementsByTagName('select'), function() {
if (this.value == "Other (please specify)") {
var inputs = this.parentNode.parentNode.getElementsByTagName("input");
for (var i=0; i<inputs.length; i++)
if (/\bhidden\b/.test(inputs[i].className))
inputs[i].style.display = "";
}
});