jQuery自定义事件未在$(document).ready()

时间:2018-02-10 11:40:30

标签: jquery wordpress custom-events

我正在使用.on()中的$(document).ready()注册自定义事件处理程序,但它们未被触发。

我已在Chrome和Firefox中验证

  1. 事件正在注册到正确的元素
  2. 处理程序正常运行,
  3. 偶数是在正确的元素上触发的
  4. 我还在内置事件(例如 click)下注册了相同的处理程序,一切都运行良好。

    我尝试创建一个最小的工作示例,但无法复制此行为。

    相关性

    • 一切都适用于jQuery 1.12.4,但不适用于3.2.1
    • 代码作为自定义WordPress 4.9.1插件的一部分运行
    • Test Page
    • Full Code
    • 自定义事件名为 eor:date-change
    • 该事件已在 .eor-calendar 元素上注册并触发
    • 基本逻辑流程是用户点击导航按钮(.eor-nav),该按钮通过data-current-date属性在日历(.eor-calendar)上设置日期。然后触发eor:date-change事件,更新日历上的日期,并在每个约会上触发eor:约会 - 更改事件。约会然后相应地更新他们的数据。

    相关代码

    $( document ).ready( function( ) { 
        $( '.eor-calendar' ).on( 'eor:date-change', function() {
            eor_updateCalendarToCurrentDate( $( this ) );
        } );
    } );
    
    function eor_setCalendarDate( date, calendar, timezone ) {
        var $ = $ || jQuery;
    
        if( ! ( date instanceof Date ) ) {
            date = new Date( date );
        }
        if( ! calendar ) {
            calendar = $( '.eor-calendars-wrapper .eor-calendar' );
        }
    
        calendar.each( function() {
            var self = $( this );
            var startDate = eor_stringToDate( self.data( 'start-date' ), timezone );
            var endDate = ( self.data( 'end-date' ) ? eor_stringToDate( self.data( 'end-date' ), timezone ) : undefined );
    
            if( startDate <= date ) { 
                if( ! endDate || date <= endDate ) { 
                    // set date
                    var dateString = eor_dateToString( date ); 
                    self.attr( 'data-current-date', dateString );
                    self.data( 'current-date', dateString );
    
                    // trigger event to update calendar
                    self.trigger( 'eor:date-change' ); 
                }
            }
        } );
    }
    

    更新1 检查jQuery版本($ .fn.jquery)时,我得到了

    3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
    

    WordPress可能已删除了我需要的功能。如果是这种情况,我该如何包含它?

0 个答案:

没有答案