jQuery.event.handle未记录并已弃用

时间:2013-06-13 22:35:34

标签: javascript jquery jquery-plugins

我正在使用具有此代码块的插件。但是我收到了这个错误

   JQMIGRATE: jQuery.event.handle is undocumented and deprecated

*原因:jQuery.event.handle从未记录过,并且不推荐使用jQuery 1.7(请参阅http://forum.jquery.com/topic/deprecated-event-properties-used-in-jquery)。从jQuery 1.9开始,它已被删除。

解决方案:使用记录在案的jQuery API,例如.trigger *

handler: function( event, execAsap ) {
    // Save the context
    var context = this,
        args    = arguments;

    // set correct event type
    event.type = "smartresize";

    if ( resizeTimeout ) { clearTimeout( resizeTimeout ); }
    resizeTimeout = setTimeout(function() {
        jQuery.event.handle.apply( context, args ); //here
    }, execAsap === "execAsap"? 0 : 50 );
}
那么,这条线会改变成什么?

jQuery.event.handle.apply( context, args );

2 个答案:

答案 0 :(得分:4)

我猜context必须是传递给该自定义事件的元素和args参数,所以这样的事情可能会起作用:

$(this).trigger(event, [args]);

我建议重构一下,使用on代替bind。然后,您可以非常轻松地trigger使用on定义的自定义事件,我不认为使用此方法您需要定义自定义事件,以便您可以使代码更小。

http://api.jquery.com/on/

答案 1 :(得分:1)

你可以试试这个:      而不是

  jQuery.event.handle.apply( context, args );
  to use

jQuery.event.dispatch.apply( context, args );

这样可以正常工作......