1

私のコード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="jquery.js"></script>
<script>
$(function(){
    $("body").on("click",".mes_sel",function(){
        if($(".mes_sel:checked").length==0){
            alert("Checked");
        }
        else alert("Not Checked");
    });
});
</script></head>
<body>
<input type="checkbox" class="mes_sel">
</body>
</html>

チェックボックスをチェックする前にonclickが実行されているため、テキストボックスがチェックされていないときにアラートがチェックされます。入力のチェック/チェック解除後にクリックイベントを実行するにはどうすればよいですか

4

3 に答える 3

1

そのために使用changeします:

$(function(){
    $(".mes_sel").on("change", function(){
        if($(this).is(':checked')){
            alert("Checked");
        } else {
            alert("Not Checked");
        }
    });
});​

デモ

于 2012-06-22T15:07:50.797 に答える
0

代わりにこれを試してください:

$("body").on("click", ".mes_sel", function() {
    if ($(this).is(":checked")) {
        alert("Checked");
    }
    else alert("Not Checked");
});​

jsFiddle の例

于 2012-06-22T15:12:30.397 に答える
0

しばらく前にこの問題に遭遇しました。また、ブラウザによって処理が異なることもわかりました。私の記憶が正しければ、クロムは最悪の犯罪者でした。

これは必ずしも最良の解決策ではありませんが、カスタム属性を各チェックボックスにアタッチし、たとえば「isChecked」と指定してから、次のようにこの属性に基づいて関数を作成できます。

if ($("mes_sel").attr("isChecked") == "true") { ... }

私が言ったように、チェックボックスの実際のチェックされた値との一貫性を保つために「isChecked」属性を手動で反転する必要があるため、最善の解決策ではありませんが、よりエレガントなものがない場合はうまくいきます。

この の例が必要な場合は、次の jsFiddle を確認してください。

http://jsfiddle.net/NathanFriend/GAP2j/

これにより、通常のラジオ ボタンが「トグル可能な」ラジオ ボタンに変わります。ブラウザーがonclickイベントを実行する方法が異なるため、このカスタム属性メソッドを使用せざるを得ませんでした。

于 2012-06-22T15:13:35.643 に答える