テストするこの単純なjQueryコードがあります。
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("text").attr("disabled","");
});
});
</script>
</head>
<body>
<input type="text">
<br />
<button>Set the textfield disabled</button>
</body>
</html>
基本的に、HTMLページにはシンプルなボタンとテキストフィールドが付属しています。ボタンをクリックするときに入力フィールドを無効にしたいのです。しかし、それは機能しませんか?
(追記:このコードは、jQueryの強力さをテストするためだけに、w3schools.com Webサイトから提供されています)
JQuery 1.7から、_.prop
_を使用できます。
_$(document).ready(function(){
$("button").click(function(){
$(":text").prop("disabled", true);
});
});
_
1.7より前では、次のことができました。
_$(document).ready(function(){
$("button").click(function(){
$(":text").attr("disabled", true);
});
});
_
PS:$(":text")
または$('input[type="text"]')
を使用して、テキスト型のすべての要素を選択します。
これを試して:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#text").attr("disabled","true");
});
});
</script>
</head>
<body>
<input id="text" type="text">
<br />
<button>Set the textfield disabled</button>
</body>
</html>
text
にjquery
セレクターはありません。属性セレクター[attribute=value]
を使用する必要があります
$('input[type=text]').prop('disabled', true); // prop Works on jquery 1.7+
または:
$('input[type=text]').attr('disabled', 'disabled'); // Works in each version.
// But isn't W3C standard.
:text
セレクターがありますが、最初のオプションよりも効率が低くなります。 docs を参照してください。
$( ':text')は$( '[type = text]')と同等であるため、すべての要素が選択されます。他の疑似クラスセレクター(「:」で始まるもの)と同様に、タグ名または他のセレクターを前に付けることをお勧めします。それ以外の場合は、ユニバーサルセレクター( "")が暗黙指定されます。つまり、裸の$( ':text')は$( ':text')と同等であるため、代わりに$( 'input:text')を使用する必要があります。
追記事項::textはjQuery拡張機能であり、CSS仕様の一部ではないため、:textを使用したクエリでは、ネイティブDOM querySelectorAll()メソッドによって提供されるパフォーマンスの向上を利用できません。最新のブラウザでパフォーマンスを向上させるには、代わりにse [type = "text"]を使用してください。
のXHTMLは無効であることに注意してください。 <input type="text">
=> <input type="text" />
を閉じる必要があります
または(より現代的):
$("input[type=text]").prop('disabled', true);
$( "input")。attr( "disabled"、 "disabled");