2017-02-26 78 views
0

我已经显示了我的网页上使用jQuery UI的多个日历。日历工作正常。我正在尝试获取日历的ID,当我点击日历上的下一个或上一个按钮时。我使用的代码是这样的:获取日历div的ID点击next/prev按钮在日历在jquery

<div class="calendar" id="calendar1"></div> 
<div class="calendar"id="calendar2"></div> 
<div class="calendar" id="calendar3"></div> 

和jQuery代码

$('.calendar').datepicker({ 
    inline: true, 
    firstDay: 1, 
    showOtherMonths: true, 
    dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] 
}); 
$(document).on('click', '.ui-datepicker-next', function() { 
    console.log($(this).parent().parent().parent().attr('id')); 
}); 

它应该显示CALENDAR1/CALENDAR2/calendar3但不是显示ID它显示未定义。在日期选择器的HTML是这个

<div class="calendar hasDatepicker" id="calendar1"> 
    <div class="ui-datepicker-inline ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" style="display: block;"> 
    <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all"> 
     <a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_1488149175514.datepicker._adjustDate('#calendar50', -1, 'M');" title="Prev"> 
     <span class="ui-icon ui-icon-circle-triangle-w">Prev</span> 
     </a> 
     <a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_1488149175514.datepicker._adjustDate('#calendar50', +1, 'M');" title="Next"> 
     <span class="ui-icon ui-icon-circle-triangle-e">Next</span> 
     </a> 

,因为我们可以看到父母通话是正确的,这是工作,如果我使用

console.log($('.ui-datepicker-next').parent().parent().parent().attr('id')); 

但总会给第一个div即CALENDAR1的ID。

+0

的问题将在父母的'多重链接()'。我实际上看不到'.ui-datepicker-next'正在动态构建的位置,但是它注意到它会为输入创建一个div ** separate **。在获取ID之前,您需要链接一个'find()'来定位输入字段。它应该仍然返回**一些** ID,所以我猜你可能使用了太多的父母选择器。尝试第一次记录'$(this)',然后从那里进行链接:) –

+0

可以添加更多的ur html?主要是我的意思是包括'ui-datepicker-next'的部分 –

回答

0

随着文档的公司:onChangeMonthYear(Integer year, Integer month, Object inst)

onChangeMonthYear:function(year, month, instance){ 

    console.log(instance.id) 

} 

所以请尝试使用:

$('.calendar').datepicker({ 
    inline: true, 
    firstDay: 1, 
    showOtherMonths: true, 
    dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
    onChangeMonthYear:function(year, month, instance){ 

     console.log(instance.id) 

    } 
});