Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery - codeigniter. Невозможно удалить второй елемент на странице (https://javascript.ru/forum/jquery/40514-jquery-codeigniter-nevozmozhno-udalit-vtorojj-element-na-stranice.html)

m175 08.08.2013 17:50

jQuery - codeigniter. Невозможно удалить второй елемент на странице
 
Здравствуйте,

На страницу загружаются елеменьы с БД, которые нужно выборочно удалять. После удаления любого елемента, <div> обновляется, но дальше нет возможности удалять, так как селект не срабатывает.

это упрощенный пример. На страницу "test" загружаются id с БД, формируются кнопки с value='id' (значение id - с БД). После чего кликаю на кнопку, значение id передается в функцию test_delete($id), удаляется запись с БД и потом формируется html которые передается назад в вид test и затирает старые данные.

После этого jquery селект не срабатывает.
Что надо исправить чтоб можно было удалять любые даные на странице ?

Контролер:

function test_contr(){
   $this->load->model('admin/Product_crud');
   $data['query']=$this->Product_crud->test_model_select_data();
   $this->load->view('admin/test',$data);
   
}

function test_delete($id){
   $output = NULL;
   //var_dump($id);
   $this->load->model('admin/Product_crud');
   $this->Product_crud->test_delete($id);
   $data['query']=$this->Product_crud->test_model_select_data();
   
   foreach($data['query'] as $row){
      $output .= $row->id."<input class='del_picture' type='button' value='".$row->id."' name='id'>";
   }
  // echo $output;
    echo json_encode($output);
   //var_dump($data);
   //$this->output->enable_profiler(TRUE);
   
}


Модель: выкладывать нет необходимости

Вид:

<!DOCTYPE html>
<html>
   <head>
   <META http-equiv="Content-Type" content="text/html; charset=utf-8">   
   <script src="/script/jquery-1.9.1.min.js"></script>
   </head>
<body>
   
   
<div class="result_table">
   
<?php
foreach ($query as $row){
   echo $row->id."<input class='del_picture' type='button' value='".$row->id."' name='id'>";
}
?>  
</div>
   
   <script>
$(".del_picture").on("click", function(){
  
   var id =  $(this).attr("value");
     var myurl = '<?php echo base_url()."admin/main/test_delete/"?>';
     
    var url = myurl + id;
    $.ajax({
            url: url,
            type:'GET',
            dataType: 'json',
            
            success: function(update_html){
                    $(".result_table").html(update_html);
                     
                } 
            });    
   
});
</script>

</body>
</html>

рони 08.08.2013 23:55

Цитата:

Сообщение от m175
Что надо исправить чтоб можно было удалять любые даные на странице ?

нормально поставить on на неудаляемый элемент "result_table" или выше body или document
$(".result_table").on("click", ".del_picture", function(){

m175 09.08.2013 12:18

Вы ше body не сработало, все оставил на своих местах, только скрипт обернул как Вы указали и даные начали удалятся.
Вот окончательный код:
$(".result_table").on("click", ".del_picture", function(){
$(".del_picture").on("click", function(){
 /* alert("hi"); */
   var id =  $(this).attr("value");
     var myurl = '<?php echo base_url()."admin/main/test_delete/"?>';
     
    var url = myurl + id;
    $.ajax({
            url: url,
            type:'GET',
            dataType: 'json',
           
            
            success: function(update_html){
                    $(".result_table").html(update_html);
                     
                } 
            });    
   });
});


Огромное спасибо :) .

Еще один вопрос по производительности. Задержка 200-350 мс, следующая запись так сразу не удаяляется. По умолчанию ж стоит асинхронный запрос...

рони 09.08.2013 12:43

m175,
должно работать без строк 2 и 19 -- а success естественно сработает когда ответит сервер.

m175 09.08.2013 13:04

удалили строки задержка исчезла.
:thanks:


Часовой пояс GMT +3, время: 23:55.