buttonタグやinputタグやaタグなどのボタンが並ぶ場合、押したボタンがdisabled状態のチェックボックスかを判定する方法をご教示いただけないでしょうか。
下記は動作サンプルです。
サンプル
サンプルにつきましては、「肉」と「野菜」がチェックボックスで、「漬物」がaタグ、その他はbuttonタグになっています。
ボタンを押すと各ボタン名のアラートが出ます。
チェックボックスはチェックをすると赤色になり、ボタン群下のdisabledボタンを押すと、チェックボックスそれぞれがdisabledになり灰色になります。
実現したいことをサンプルにおいて言えば、disabled状態のチェックボックスを押した場合、アラートでdisabledを表示したいです。
ソースコード
javascript
1// 各ボタンアラート 2$("#kome").click(function () { 3 alert("お米"); 4}); 5$("#niku").click(function () { 6 if ($("#niku").prop("checked")) { 7 alert("肉"); 8 }; 9}); 10$("#shiru").click(function () { 11 alert("味噌汁"); 12}); 13$("#yasai").click(function () { 14 if ($("#yasai").prop("checked")) { 15 alert("野菜"); 16 }; 17}); 18$("#tsuke").click(function () { 19 alert("漬物"); 20}); 21$("#dessert").click(function () { 22 alert("デザート"); 23}); 24 25// チェックボックスをdisabledにするボタン 26$("#nikuDisabled").click(function () { 27 disabled($("#niku")[0]); 28}); 29$("#yasaiDisabled").click(function () { 30 disabled($("#yasai")[0]); 31}); 32var disabled = function (check) { 33 var obj = check; 34 if (obj.disabled === true) { 35 obj.disabled = false; 36 return; 37 }; 38 obj.disabled = true; 39}; 40 41// 機能しません 42$(".buttons").click(function () { 43 if ($(this).prop("disabled")) { 44 alert("disabled"); 45 }; 46});
html
1<body> 2 <button class="buttons" id="kome">お米</button> 3 <input id="niku" class="check" type="checkbox"> 4 <label class="buttons" for="niku">肉</label> 5 <button class="buttons" id="shiru">味噌汁</button> 6 <input id="yasai" class="check" type="checkbox"> 7 <label class="buttons" for="yasai">野菜</label> 8 <a class="buttons" id="tsuke">漬物</a> 9 <button class="buttons" id="dessert">デザート</button> 10 11 <br> 12 <button id="nikuDisabled">肉disabled</button> 13 <button id="yasaiDisabled">野菜disabled</button> 14 15 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"</script> 16</body>
css
1html{ 2 text-align: center; 3} 4 5a { 6 color: black; 7} 8 9.buttons { 10 display: inline-flex; 11 border: 1px solid black; 12 background-color: white; 13 font-size: 1em; 14 padding: 1%; 15 margin: 2%; 16 cursor: pointer; 17} 18 19.check { 20 display: none; 21} 22 23.check:checked + label { 24 background-color: red; 25 color: white; 26 cursor: default; 27} 28 29.check:disabled + label { 30 background-color: gray; 31 color: white; 32 cursor: default; 33}
追記
disabled状態の要素にイベントを組み込めないことを知りませんでしたので、大変勉強になりました。
ありがとうございました。
「押したボタンがdisabledでなければイベントを発火」は、実装することは可能でしょうか。
「ボタン群にリップルエフェクト施し、disabled時はリップルエフェクトを適用しない」という機能にしたいです。
下記サンプルは冒頭のサンプルのボタンにリップルエフェクトを施したものです。
アラートは削除しました。
ただし上記サンプルのJavaScriptの最後に下記のコードを記述したのですが、機能しませんでした。
javascript
1$(".buttons").click(function () { 2 if (!$(this).prop("disabled")) { // 押したボタンがdisabledでなければ発火 3 $(".buttons").ripple(); // .ripple()メソッドで指定したセレクタにリップルエフェクト適用 4 }; 5});
上記コードはdisabled状態のボタンにイベントを組み込ませているわけではない、という認識なのですが、みなさまがご回答いただきました意味と同義なのでしょうか。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 02:14