Попытка обновить div с помощью jQuery в MVC f / w - PullRequest
0 голосов
/ 07 октября 2011

Привет всем, я уже давно работаю над этой конкретной проблемой, пожалуйста, помогите.Я посмотрел на jQuery: Обновить div после другого действия jquery? , и оно делает именно то, что я хочу, но только один раз!У меня есть таблица, сгенерированная из db, и когда я нажимаю на delete, она удаляет строку и обновляет 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 читает данные из базы данных.<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 ]

3 голосов
/ 07 октября 2011

Вы удаляете где-нибудь выражения, соответствующие $ ('# docs td.delete')? Если это так, рассмотрите возможность использования $ .live (), которая прикрепит вашу функцию ко ВСЕМ совпадающим элементам независимо от текущего или будущего; например,

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

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

2 голосов
/ 07 октября 2011

Попробуйте использовать bind() вместо click(). Метод click() не будет работать с динамически добавленными элементами в DOM, поэтому, вероятно, он работает только в первый раз, а не после повторного заполнения его обновленным содержимым.

Вам просто нужно заменить

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

с

$('#docs td.delete').bind('click', function() {
1 голос
/ 07 октября 2011

Заменяете ли вы элементы html, на которых есть события, данными, которые вы получаете через ajax? Если в итоге вы замените элементы td.delete, то новые элементы не получат привязку автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...