idセレクタとして変数を指定して.prop()を使用すると問題が発生します。最終的には、チェックボックスをオンにすると、チェックボックスをオンにし、オンにするとオフにします。.prop()変数セレクタでチェックボックスを選択しない
これは、リストアイテムの親をクリックすると、折りたたまれ展開される州/市リストの一部です。
フィドル:https://jsfiddle.net/xeud8khg/
$('#expList input:checkbox').unbind('click').click(function() {
var clicked = "#" + event.target.id;
$(clicked).prop('checked', true);
console.log(clicked); //To see that the right id was selected.
return false;
});
更新:ラベル上のチェックボックスとクリックのトグルを追加するBarmarの答えを使用します。私は、クリーンな方法があると確信しているが、これは働いていた:
//Fake checkbox
$('#expList input:checkbox').off('mouseup').mouseup(function(event) {
var clicked = "#" + event.target.id;
if ($(clicked).is(':checked'))
$(clicked).prop('checked', false);
else
($(clicked).prop('checked', true));
return false;
});
//Fake label
$('#expList label').off('mouseup').mouseup(function(event) {
labelID = "#" + $(this).attr('for');
if ($(labelID).is(':checked'))
$(labelID).prop('checked', false);
else
($(labelID).prop('checked', true));
return false;
});
更新フィドル:https://jsfiddle.net/fasr5frp/
'.unbind()'は推奨されません、あなたは ')(' .offを使用する必要があります。 IDを検索する代わりに '$(this)'や '$(event.target)'を使うことができます。 – Barmar
'event'をグローバル変数として使うことは移植性がありません。コールバックの引数にする必要があります。 – Barmar
'.prop()'の後にブレークポイントを設定すると、ボックスがチェックされていることがわかりますが、関数が復帰した後に何かチェックが外されています。私はあなたがデフォルトを妨げているので、理由は分かりません。 – Barmar