1

別のカスタム関数と同じように定義されたカスタム関数があります。2 番目のカスタム関数は機能しますが、最初のカスタム関数は機能しません。

違いは、最初のカスタム関数が 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(). それはうまくいきます。2 つ目のカスタム関数はslideLeft(). それはうまくいきません。しかし、slideLeft()現在コメントアウトされている の呼び出し前のアラートは正常に機能します。

どうすればslideLeft()その状態になることができますか?

更新:ここに私の問題を再現する JS Fiddle があります: http://jsfiddle.net/bccQh/1/

画面から 60% 以上離れている場合は、#tabViewWindow を left: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 に答える