自定义功能没有发生,但在它之前发出警报

时间:2013-06-17 14:39:53

标签: javascript jquery

我有一个自定义函数,就像另一个自定义函数一样。第二个自定义函数有效,但第一个自定义函数不起作用。

不同之处在于第一个自定义函数发生在if条件中。

我认为我的if条件有问题,但它似乎正在作为它内部的警报发射。其中的自定义函数不是。

这是我的代码:

$('#tabViewWindow').pep({
axis:'x',
useCSSTranslation:false,
drag:function(ev, obj){

    if(obj.dx>0 && obj.$el.offset().left>=$(window).width()*0.6){
    /*alert("slide here");*/
    slideLeft(ev, obj);
    }
    handleOpacity(ev, obj);
},
});
function handleOpacity(ev, obj){
var opacity = 1 - (parseInt(obj.$el.css('left'))/$(window).width());
obj.$el.css('opacity', opacity);
}
function slideLeft(ev, obj){
    obj.$el.animate({left:'100%'});
}

第一个自定义函数是handleOpacity()。这样可行。第二个自定义函数是slideLeft()。这不起作用。但是,调用slideLeft()之前的警报(目前已被注释掉)可以正常工作。

如何在条件下发生slideLeft()

更新:这是一个重复我的问题的JS小提琴:http://jsfiddle.net/bccQh/1/

我试图将#tabViewWindow向左滑动:向左滑动:100%,如果屏幕显示为60%或更多。

1 个答案:

答案 0 :(得分:1)

你的动画与jquery-pep使用的动画有冲突。

每当你不希望pep控制你的div时,你必须在拖动功能上返回false:

drag:function(ev, obj){
        if(obj.dx>0 && obj.$el.offset().left>=$(window).width()*0.6){
            slideLeft(ev, obj);
            return false;
        }
        handleOpacity(ev, obj);
    },

行为并不是很顺利,但它符合您的期望。

http://jsfiddle.net/V6Ypt/