1

サイトにチェックボックスがあり、それぞれがイベント名を表しています。

i は beckboxes に基づいてイベント ベースにバインドおよびアンバインドします。サイト ロードでは、デフォルトですべてのチェックボックスがチェックされています。これは私のコードです:

var pusher = new Pusher('secret');
var channel = pusher.subscribe('latest-news');
$("input:checkbox[name=category]:checked").each(function()
{
    channel.bind($(this).val(), function(data) {
        getNews(data.id);
    });
});

function getNews(ids)
{
    $.post("show", {id: ids})
            .done(function(data) {
        $(".c").prepend(data);
    });
}

このコードはチェックボックスの変更に反応します:

$(document).ready(function() {
    $('input:checkbox[name=category]').click(function() {
        var $this = $(this);
        // $this will contain a reference to the checkbox   
        if ($this.is(':checked')) {
            alert('yes');
            channel.bind($(this).val(), function(data) {
                getNews(data.id);
            });
        } else {
            alert('no');
            channel.unbind($(this).val(), function(data) {
            });
        }
    });
});

問題は、誰かがチェックボックスをオフにしてからもう一度チェックすると、各メッセージが2回表示されることです。同じイベントに2回バインドせずにイベントに動的にバインドおよびバインド解除する正しい方法は何ですか。ありがとう

4

1 に答える 1