我最近将我的一个项目更新为jQuery 1.9.1,我不能再使用$.event.handle.apply()
方法了。我搜索并发现,我可以放置jquery.migrate.js。我只是想确认是否还有其他选择?我的google-fu在这里失败了......
- 编辑 - 这是导致问题的代码(不是我的......从插件中复制的)......
// 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);
}
答案 0 :(得分:10)
或者您可以尝试:
$。event。 dispatch .call(obj,event);
答案 1 :(得分:5)
我在寻找Infinite Scroll的解决方案时找到了这个主题,它不能与jQuery 1.9。*一起使用,并且导致与原始帖子相同的错误。
JQNinja的评论提供了一个合适的解决方案:在插件中将$.event.handle.apply
的单个实例更改为$.event.dispatch.apply
修复了Infinite Scroll。我假设它也将解决原始海报的问题。
据我所知,修改插件并不理想,但由于在编写本文时它不再被维护,我可能不必关心更新 - 让我们假设,如果要恢复维护,这个问题也将得到解决!
答案 2 :(得分:0)
正如您将看到here这个插件不再开发的那样。但是在讨论结束时你有办法解决一些问题:
在插件js文件的第642行,我有:
event.type = 'lastclick';
$.event.handle.apply(Me, [event,clicks])
我刚刚改变了这两个:
event.type = 'lastclick';
event.isPropagationStopped = function() { return false };
$.event.handle.apply(Me, [event,clicks])
所以,我刚刚重置isPropagationStopped
并且热情地开始工作正常!
我希望这会对你有所帮助。
答案 3 :(得分: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 !');
}
});
});
答案 4 :(得分:-3)
更改此行:
返回$ .event.handle.apply(this,args);
为:
返回 jQuery .event.handle.apply(this,args);