使用unbind()和bind()函数

时间:2014-08-22 08:34:11

标签: jquery click bind unbind

您已使用prev / next构建图像滑块。在取消绑定上一个或下一个Button后,我想再次绑定它们的问题,如何将bind()集成到我的代码中?

这是我的代码: -

// for sliding right
var counter = 1;
$('#nextArrow').click(function(){
    var item_width = $('.productList li').width(); 
    var left_indent = parseInt($('.productList').css('left')) - item_width;
    $('.productList').animate({'left' : left_indent},function(){
        if( counter > $('.li_group').length - 1) {
            $('.nextArrow').addClass('disabled');
            $('.prevArrow').removeClass('disabled');
            $('#nextArrow').unbind('click');
        }
    });
    counter++;
});

// for sliding left
$('#prevArrow').click(function(){

    var item_width = $('.productList li').width();

    var left_indent = parseInt($('.productList').css('left')) + item_width;
    $('.productList').animate({'left' : left_indent},function(){
        if( counter == 1) {
            $('.prevArrow').addClass('disabled');
            $('.nextArrow').removeClass('disabled');
            $('#prevArrow').unbind('click');
        }
    });
    counter--;
});

1 个答案:

答案 0 :(得分:0)

您根本不需要使用bindunbind。在您的#nextArrow#prevArrow元素中添加一个类,并将您的选择器更改为仅使用jQuery's :not() selector处理没有这些类的元素。

例如,在#nextArrow点击处理程序中,您可以将此类添加到#nextArrow元素中,并确保将其从#prevArrow元素中删除:

if( counter > $('.li_group').length - 1) {
    $('#nextArrow').addClass('ignore-click');
    $('#prevArrow').removeClass('ignore-click');
    ...
}

然后你可以修改你的jQuery选择器只影响没有ignore-click类的元素:

$('#nextArrow:not(.ignore-click)').click(...);

$('#prevArrow:not(.ignore-click)').click(...);