1

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

不同之处在于第一个自定义函数发生在 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 Fiddle:http: //jsfiddle.net/bccQh/1/

我正在尝试将#tabViewWindow 向右滑动,如果它离屏幕 60% 或更多,则将其向左:100%。

4

1 回答 1

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/

于 2013-06-17T15:57:04.623 回答