[解決済み] jQuery Clickはラベルをクリックすると2回実行されます。
2022-08-05 22:32:24
質問
私はカスタムラジオボタンを作成するためにjQueryを使用していますが、私は問題があります。 私はラジオ自体にのみクリックした場合、ラジオに関連付けられたラベルをクリックすると、クリックイベントが2回発生し、それは正常に動作している(まあ実際にはそれは私がクリックしているラジオではなく、全体の入力とラベルをラップするDivの)です。ここでは、コードです。
HTMLです。
<div id="box">
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem>RADIO1</asp:ListItem>
<asp:ListItem>RADIO2</asp:ListItem>
<asp:ListItem>RADIO3</asp:ListItem>
</asp:RadioButtonList>
</div>
jQueryを使用します。
<script type="text/javascript">
$(function () {
$('#box').find('input:radio').each(function (i) {
var input = $(this);
// get the associated label using the input's id
var label = $('label[for=' + input.attr('id') + ']');
// wrap the input + label in a div
$('<div class="custom-radio"></div>').insertBefore(input).append(label, input);
var wrapperDiv = input.parent();
// find all inputs in this set using the shared name attribute
var allInputs = $('input[name=' + input.attr('name') + ']');
// necessary for browsers that don't support the :hover pseudo class on labels
label.hover(
function () {
$(this).addClass('hover');
}, function () {
$(this).removeClass('hover checkedHover');
});
//bind custom event, trigger it, bind click,focus,blur events
wrapperDiv.bind('updateState', function () {
if ($(this)[0].children[1].checked) {
allInputs.each(function () {
var curDiv = $('div > label[for=' + $(this).attr('id') + ']').parent();
curDiv.removeClass('custom-radio-checked');
curDiv.addClass('custom-radio');
});
$(this).toggleClass('custom-radio custom-radio-checked');
}
else {
$(this).removeClass('custom-radio-checked checkedHover checkedFocus');
}
})
.trigger('updateState')
.click(function () { console.log('click'); })
.focus(function () {
label.addClass('focus');
}).blur(function () {
label.removeClass('focus checkedFocus');
});
});
});
</script>
この動作について、何か解決策はありますか?
どのように解決するのですか?
追加してみてください。
evt.stopPropagation();
evt.preventDefault();
を .bind() または .click() のどちらかに追加してください。また、パラメータ
evt
のように関数に追加します。
function(evt) {...
関連
-
[解決済み] ユーザーがDIVの外側をクリックしたときに、jQueryを使用してDIVを非表示にする
-
[解決済み] jQueryのSELECT要素で特定のオプションを選択するにはどうすればよいですか?
-
[解決済み] jQuery チェックボックスの変更とクリックイベント
-
[解決済み] jQueryでオブジェクトに登録されたイベントハンドラを検索する
-
[解決済み] jQueryでtextareaの値を設定する
-
[解決済み] jQuery removeClass ワイルドカード
-
[解決済み] jQueryの検証:デフォルトのエラーメッセージを変更する
-
[解決済み] セレクトボックスの選択項目を設定する
-
[解決済み] jquery input select all on focus
-
[解決済み】iPad版SafariでjQueryを使ってタッチイベントを認識させる方法は?可能でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Uncaught TypeError: 未定義のプロパティ 'length' を読み取れませんでした。
-
[解決済み] 選択オプション「selected」を値で設定する
-
[解決済み] jQuery データ属性の値に基づいて要素を検索する方法は?
-
[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?
-
[解決済み] jQueryでtextareaの値を設定する
-
[解決済み] WebKit の event.layerX と event.layerY に関する問題
-
[解決済み] jQueryを使用してCSSのdisplay noneまたはblockプロパティを変更するにはどうすればよいですか?
-
[解決済み] jQuery .onとhoverの使い分けは可能ですか?
-
[解決済み】jQueryがリクエストボディに有効なjsonを投稿する。
-
[解決済み] jQueryを使用して文字列から最後の文字を削除する方法は?