javascript - 如何从codeigniter日历的ajax成功结果中获取元素的attr?

标签 javascript php jquery ajax codeigniter

我将使用 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/

相关文章:

javascript - 在 Laravel 中获取 AJAX 数据

javascript - JQuery 的 .append() 执行了 6 次而不是 1 次

javascript - 如何在js中从字符串构建变量?

javascript - ESDoc:忽略特定文件

javascript - 对 html 中选定的值求和

php - MYSQL选择至少包含另一个表中的两个元素的类别

javascript - Greplin 编程挑战第 3 级(Matlab)

php - 验证码非 PHP

javascript - 悬停时仅显示一个 div

多个 ajax 调用的 jQuery 回调