我有一个自定义函数,就像另一个自定义函数一样。第二个自定义函数有效,但第一个自定义函数不起作用。
不同之处在于第一个自定义函数发生在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%或更多。
答案 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);
},
行为并不是很顺利,但它符合您的期望。