2013-03-27 14 views
5

最近私のプロジェクトの1つがjQuery 1.9.1にアップデートされましたが、もう$.event.handle.apply()メソッドを使用できなくなりました。検索して見つけたので、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); 
} 
+2

あなたは文書化されていないものを使用していたような音がして、それが変更されました。もしあなたが何をしたいのかを言ったら、私たちはあなたを助けることができるかもしれません。 –

+0

おそらく '$()。trigger'が必要です。 –

+0

@TJCrowder ..返事ありがとうございました...編集内容を見てください。 – Khan

答えて

0

として...ですhereこのプラグインは開発されていません。しかし、あなたには、いくつかの問題を解決する方法を持っているこの議論の終わり:

私はこれを持っているプラ​​グインの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をリセットしましたが、すぐに正常に動作し始めました!

私はこれがあなたに役立つことを願っています。

+0

1.9.1でこのアプローチをテストしましたか? –

+0

まだテストされていません。私の場合は$()トリガが良い方法です –

+0

これは古い解決法です。 JQuery 1.9.1と$ .event.handle.applyはjquers docsにしたがって削除されています。 – Khan

-3

変更この行:

return jQuery.event.handle.apply(this, args);

+2

動作していません...これは違いはありません... – Khan

7

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

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

に私はここに解決策を見つけた

$.event.dispatch.call(obj, event);

+2

jQuery 1.8.3でこれが見つかりました: 'jQuery.event.handle = jQuery.event.dispatch;' – RPNinja

0

、私はそれをテストし、それが正常に
を働きますGet mouse wheel events in jQuery?

$(document).ready(function(){ 
    $('#foo').bind('mousewheel', function(e){ 
     if(e.originalEvent.wheelDelta /120 > 0) { 
      $(this).text('scrolling up !'); 
     } 
     else{ 
      $(this).text('scrolling down !'); 
     } 
    }); 
}); 
3

このトピックは、jQuery 1.9。*で動作しないInfinite Scrollのソリューションを探しているときに見つかったもので、元の投稿と同じエラーが発生します。

JQNinjaさんのコメントは、プラグインでInfomite Scrollの$.event.handle.apply$.event.dispatch.applyに変更することで、適切な解決方法を提供しました。私は元のポスターの問題も解決すると仮定しています。

プラグインの変更は理想的ではありませんが、執筆時点では維持されていないため、おそらく私はアップデートに心配する必要はないと思います。メンテナンスを再開する必要があります。この問題は修正される予定です!

+1

回答ありがとうございます...しかし、私はもはやこれで作業していません... ...私はこの質問をそのまま残しておくべきか、とにかく閉じたものとしてマークするべきか分かりません。 – Khan

+1

は別のプラグインでこれを試してみました。私はそれが何を意味するのか分かっていればいいと思う:-) – commonpike

関連する問題