尝试在MVC f / w中使用jQuery刷新div

时间:2011-10-07 06:08:02

标签: php jquery codeigniter

大家好,我现在一直在研究这个特殊问题,PLZ帮助。 我看过jQuery: Refresh div after another jquery action? 它完全符合我的要求但只做一次!我有一个从db生成的表,当我点击删除它删除行并刷新div但之后没有任何我的jquery函数可以工作。

$('#docs td.delete').click(function() {
    $("#docs tr.itemDetail").hide();
    var i = $(this).parent().attr('id');

    $.ajax({
        url: "<?php echo site_url('kt_docs/deleteDoc'); ?>",
        type: 'POST',
        data: 'id=' + i,
        success: function(data) {
            $("#docs tr.itemDetail").hide();
            $("#f1").html(data); //    wont work twice            
            //$("#docs").load(location.href+" #docs>*"); //works once as well
        }
    });
});

在我的身体里我有

<fieldset class='step' id='f1'>
    <?php $this->load->view('profile/docs_table'); ?>
</fieldset>

profile / docs从db读取数据。 <table id='docs'>....</table> 和我的控制员:

function deleteDoc() {
    $id = $_POST['id'];
    $this->load->model('documents_model');
    $del = $this->documents_model->deleteDocument($id);    
    return $this->load->view('docs_table');
}

提前致谢!

3 个答案:

答案 0 :(得分:3)

你是否在任何地方删除任何与$('#docs td.delete')匹配的表达式?如果是这样,请考虑使用$ .live(),它会将您的函数附加到所有匹配元素,无论当前还是将来; e.g。

$('#docs td.delete').live('click', function() {
    // Do stuff.
});

http://api.jquery.com/live/

答案 1 :(得分:2)

尝试使用bind()代替click()click()方法不适用于动态添加到DOM的元素,这可能是它第一次工作的原因,而不是在您使用更新的内容重新填充它之后。

你应该只需要替换

$('#docs td.delete').click(function() {

$('#docs td.delete').bind('click', function() {

答案 2 :(得分:1)

您是否使用通过ajax获取的数据替换了具有事件的html元素?如果你最终替换了td.delete元素,那么新的元素将不会自动获得绑定。