0

私は2つのjquery関数を書きました。行 1 ~ 11 は、mousedown で mouseover イベントをバインドして、クリックとドラッグの効果を得て td を選択する最初の行です (内部的にチェックボックスをチェック/チェック解除します)。

2 番目の機能 (12-20) は、単一の td をクリックおよびクリック解除して、チェックボックスをオンおよびオフにすることです。マウスダウンを実行して複数の td を選択することはできますが、単一の td をクリックしてクリックを解除することはできません。どこに問題があるのか​​ わかりませんか?どんな提案でも大歓迎です。

コードは次のとおりです。

$("#tbl td").mousedown(function() {
    $("#tbl td").bind('mouseover', function() {
        var checkbox = $(':checkbox', this)[0];
        $(this).css({
            'background': (checkbox.checked ? 'white' : '#6D7B8D')
        });
        checkbox.checked = !checkbox.checked;
    });
    $(this).mouseover();
}).mouseup(function(event) {
    $("#td").unbind('mouseover');
    event.preventDefault();
    event.stopPropagation();
});

$('#tbl td').click(function(e) {
    if ($(this).find('input:checkbox').is(':checked')) {
        $(this).find('input:checkbox').attr("checked", "");
        $(this).css({
            background: "white"
        });
    } else {
        $(this).find('input:checkbox').attr("checked", "checked");
        $(this).css({
            background: "#6D7B8D"
        });
    }
});​

ありがとう

4

1 に答える 1

0

これがまさにあなたが必要としているものかどうかはわかりませんが、役立つかもしれません。

(念のため、HTMLコードを入れていただけると大変助かります!)

ライブデモ: http://jsfiddle.net/oscarj24/TATg7/

コード:

$('#tbl').on('mousedown, mouseover, mouseup, click', 'td', function(e) {
    if(e.type == 'mousedown'){
        $(this).mouseover();
    } else if(e.type == 'mouseover'){
        var checkbox = $('input:checkbox');
        $(this).css({'background': (checkbox.is(':checked') ? 'white' : '#6D7B8D')});
        checkbox.prop('checked', !checkbox.checked);    
    } else if(e.type == 'mouseup'){
        $(this).unbind('mouseover');
        e.preventDefault();
        e.stopPropagation();
    } else if(e.type == 'click'){
        var checked = $('input:checked').is(':checked');
        checked ? background = 'white' : background = '#6D7B8D';
        $('input:checked').prop('checked', !checked);
        $(this).css({background: background});
    }
});
​
于 2012-08-15T22:14:44.260 に答える