JQuery函数可以防止双击成为问题

时间:2011-07-12 19:23:21

标签: jquery variables queue

以下功能根据单击的元素向上或向下移动滚动面板。问题是,如果用户双击,则名为offset的变量不能正确建立位置,因为前一个动画尚未结束。我们需要的是一种排队动画的方法,但我不知道如何做到这一点。

我尝试了超时但它在当前超时期间触发了超时功能,所以也没有好处。

var offset = 0;

$('#leftwheel li').click(function() {

    var leftid = '#BKD' + $('#sLeft').val();
    var doubleforward = $(leftid).next().next().attr('id');
    var doublebackward = $(leftid).prev().prev().attr('id');
    var offsettots = ($(this).parent().height() - 16) / 32;
    var $this = this;

    var offset = $($this).parent().position().top;
    if('#' + $($this).attr('id') == leftid) { return false; }


    else if($($this).attr('id') == doubleforward) {
        offset += -64;
        myScroll2.scrollTo(0, offset, 400);
    }
    else if($($this).attr('id') == doublebackward) {
        offset += 64;
        myScroll2.scrollTo(0, offset, 400);
    }

    else if('#' + $($this).attr('id') > leftid) {
        offset += -32;
        myScroll2.scrollTo(0, offset, 250);
    }

    else if('#' + $($this).attr('id') < leftid) {
        offset += 32;
        myScroll2.scrollTo(0, offset, 250);
    }

});

有什么想法吗?

非凡

2 个答案:

答案 0 :(得分:2)

有点猜测但是:

$('#leftwheel li').dblclick(function(e) {
    e.preventDefault()
});
假设#leftwheel li是要禁用双击的元素,

应该可以做到这一点。

答案 1 :(得分:1)

在开头设置一个标志并在结束时重置它,然后只在标志为真时执行代码。

var flag = true;

$('#leftwheel li').click(function() {

    if ( flag ) {

        flag = false;

        // Your code here

        flag = true;

    }

});