6

$.event.handle.apply()最近、プロジェクトの 1 つを jQuery 1.9.1 に更新しましたが、メソッドを使用できなくなりました。jquery.migrate.jsを配置できることを検索して見つけました。他のオプションがあるかどうかを確認したいだけですか?私のgoogle-fuはここで失敗しています...

--EDIT--これが問題の原因となっているコードです(私のものではありません...プラグインからコピーされたものです...

// Event handler function
function mouseWheelHandler(event)
{
    var sentEvent = event || window.event,
        orgEvent = sentEvent.originalEvent || sentEvent,
        args = [].slice.call( arguments, 1 ),
        delta = 0,
        deltaX = 0,
        deltaY = 0;
        event = $.event.fix(orgEvent);
        event.type = "mousewheel";

    // Old school scrollwheel delta
    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }

    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;

    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }

    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }

    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);

    return $.event.handle.apply(this, args);
}
4

5 に答える 5

10

またはあなたが試すことができます:

$.event. ディスパッチ.call( obj, イベント );

于 2013-05-15T07:57:23.087 に答える
6

jQuery 1.9.* では機能せず、元の投稿と同じエラーが発生する Infinite Scroll の解決策を探しているときに、このトピックを見つけました。

JQNinja のコメントは適切な解決策を提供してくれました。プラグインの単一インスタンスを$.event.handle.applytoに変更する$.event.dispatch.applyと、Infinite Scroll が修正されます。元のポスターの問題も解決すると思います。

プラグインの変更が理想的でないことは理解していますが、この記事を書いている時点ではメンテナンスされていないため、おそらく更新について気にする必要はありません。メンテナンスが再開された場合、この問題は次のようになると仮定しましょう。も固定!

于 2013-12-28T01:11:18.490 に答える
0

ここでわかるように、このプラグインはもはや開発されていません。しかし、この議論の終わりには、いくつかの問題を解決する方法があります:

プラグイン js ファイルの 642 行目に、次のような記述があります。

event.type = 'lastclick';
$.event.handle.apply(Me, [event,clicks])

この2つを次のように変更しました。

event.type = 'lastclick';
event.isPropagationStopped = function() { return false };
$.event.handle.apply(Me, [event,clicks])

それで、私はちょうどそれをリセットしたところisPropagationStopped、うまくいき始めました!

これがお役に立てば幸いです。

于 2013-03-27T07:52:01.373 に答える
0

私はここで解決策を見つけました、私はそれをテストしました、そしてそれはうまく
いきます jQueryでマウスホイールイベントを取得しますか?

$(document).ready(function(){
    $('#foo').bind('mousewheel', function(e){
        if(e.originalEvent.wheelDelta /120 > 0) {
            $(this).text('scrolling up !');
        }
        else{
           $(this).text('scrolling down !');
        }
    });
});
于 2013-06-07T07:53:20.490 に答える