我将使用 codeigniter 日历来显示事件。默认情况下,当我生成日历并显示每个事件时,没有问题。每个事件都可以在引导模式上显示,具体取决于(单击)并传递到我的 Controller 功能的日期。问题是当我使用 jquery ajax 加载上个月或下个月来单击上一个或下一个链接时,月份更改后,然后我单击一天,attr 值无法被 jquery $(this) 函数捕获。这是我的代码片段:
CI 日历模板被剪断:
{cal_cell_content}<div data-toggle="modal" data-target=".mymodal" class="detail" val="{day}"><span class="myclass">{day}</span><span class="d{day}">{content}</span></div>{/cal_cell_content}
加载日历的功能:
public function show_cal_ajax($yr = NULL, $mth = NULL)
{
$this->load->model('m_cal');
$this->load->library('calendar', $this->_calconfig());
$year = $month = "";
if($yr != NULL && $mth != NULL)
{
$month = $mth;
$year = $yr;
}
else
{
$month = date('m');
$year = date('Y');
}
$numEvent = $this->m_cal->numOfEvent($month, $year);
$data = array(
'cal_data' => $this->calendar->generate($year, $month, $numEvent)
);
echo $data['cal_data'];
}
和用于加载事件详细信息的 jquery ajax :
$(".detail").on('click',function(){
var day = $(this).attr('val');
$.ajax({
type: 'POST',
dataType: 'html',
url: <?php echo "'".base_url('view/show_event_detail')."'"; ?>,
data:{<?php echo "y: $year, m: $month";?>, d: day},
success: function( data ) {
$( ".modal-content").html(data);
},
error: function(){
alert('Error: ajax request error.');
}
});
});
因此,在通过单击上一个或下一个链接更改日历后,jquery 详细信息功能不起作用,我猜 $(this).attr('val') 没有值,因为日历数据/月是通过ajax请求更改并将其附加到html上的#calendar上。任何人都可以帮助我如何获取attr值,尽管月份已更改...
顺便说一句,完整的代码可以在这里找到:http://pastebin.com/VgydABai 谢谢...
最佳答案
将年月日添加到模板中,然后使用帖子的各个值
class="detail" data-day="{day}" data-month="{month}" data-year="{year}"
var caldata = {};
$(document).on('click', ".detail", function() {
caldata["y"] = $(this).attr('data-year');
caldata["m"] = $(this).attr('data-month');
caldata["d"] = $(this).attr('data-year');
$.ajax({
type: 'POST',
dataType: 'html',
url: <?php echo "'".base_url('view/show_event_detail')."'"; ?>,
data: caldata,
success: function( data ) {
$( ".modal-content").html(data);
},
error: function(){
alert('Error: ajax request error.');
}
});
});
关于javascript - 如何从codeigniter日历的ajax成功结果中获取元素的attr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084290/