无法使用jquery获取attr id
我正在使用http://www.symfocal.com/进行symfony应用程序(2.3)
我尝试改变日历的显示方式但是我在使用jquery时有些麻烦:
这是关于我的问题的修改代码的一部分。
带有jquery的twig文件:
... jQuery(document).ready(function() { var cal1 = $('#cal1'); var cal2 = $('#cal2'); function fillCalendar(mois, annee, cal) { $(cal).css('display', 'none'); $(cal).find('a').removeClass().unbind(); {% if admin == false %} $(cal).find('a').click(function(e){e.preventDefault();}); {% endif %} ... var id = $(cal).attr('id'); $.post(url,{ month: mois, year: annee, },function(data){ if(data.responseCode==200 ) { var days_previous_month=data.days_previous_month; var nb_days_prev=data.nb_days_prev; $('#'+id+'_title').html(data.current_month); var count=1; while(count<43) { {% if admin %} if(data.calendar[(count-1)].dates!="") { $('#'+id+'_cell_'+count).attr("title", data.calendar[(count-1)].dates).click(changeState); } else { $('#'+id+'_cell_'+count).click(function(e){e.preventDefault();}); } {% endif %} if(data.calendar[(count-1)].booked==-1) $('#'+id+'_cell_'+count).html(days_previous_month - nb_days_prev + count); else $('#'+id+'_cell_'+count).html(data.calendar[(count-1)].fill); if(data.calendar[(count-1)].booked==1) $('#'+id+'_cell_'+count).addClass(data.calendar[(count-1)].classe); else if(data.calendar[(count-1)].booked<0) $('#'+id+'_cell_'+count).addClass("dates_preview"); count++; } $(cal).css('display', 'block'); } else ... function changeMonths(step) { gap = gap + step; var newMonth = month + (1 * gap)%12; var gapYear = (1 * gap)/12; var newYear = year + gapYear - gapYear%1; if (newMonth<=0) { newMonth+=12; } {% for item in items %} fillCalendar(newMonth-12*Math.floor((newMonth)/13), newYear+Math.floor((newMonth)/13), 'cal{{ item.id }}' ); {% endfor %} } ... $(window).load(function(){ changeMonths(0); }); });
和html部分 – 用树枝包括:
我对正在发生的事情的理解:
$(窗口).load(函数收费changeMonths(0)
changeMonths为每个项调用函数fillCalendar(此时测试有两个项(id为1和id为2)
这是我有一个错误:
说明:
var id = $(cal).attr('id');
没有得到id – 它未定义
但是作为参数接收的变量cal是cal1然后是cal2并且应该返回id,即cal1或cal2。
有人可以帮我解决这个问题吗?
编辑:我按照ihsan的回答 – 它现在更好,但只有第一个日历行填满了月份日
console.log(cal); shows now : #cal1 #cal2
编辑2:好的我不得不修改我的HTML以使cal2工作 – 感谢您的帮助
HTML部分:
... {{ item.name }}
js部分:
... fillCalendar(newMonth-12*Math.floor((newMonth)/13), newYear+Math.floor((newMonth)/13), '#cal{{ item.id }}' );