Как получить идентификатор или класс после того, как мы использовали функцию replaceWith в jQuery? - PullRequest
1 голос
/ 17 февраля 2011

В настоящее время я разрабатываю prpject с помощью django, и один из моих взглядов заполняет таблицу с помощью вызова ajax и функции replaceWith. Странно то, что мой html-источник не меняется, однако я могу видеть все содержимое таблицы из аргумента проверки chrome. И когда я хочу получить идентификатор или класс из сгенерированного контента, jQuery ничего не может найти.

Так что я использую replaceWith неправильно? и как я могу выбрать элементы из недавно созданного контента?

Вот код:

Jquery Part

   $('#channel_selector').change(function(event)                                                                                                               
   {                                                                                                                                                           
       event.preventDefault();                                                                                                                                 
       var selected_channel = $('#channel_selector').val();                                                                                                    
       deneme(selected_channel);                                                                                                                               
   });                                                                                                                                                         

   function deneme(d){                                                                                                                                         
       $.ajax({                                                                                                                                                
             type:"POST",                                                                                                                                      
             url:"/wsp/proginfo/",                                                                                                                       
             data:d,                                                                                                                                           
             dataType:'text',                                                                                                                                  
             success: function(msg){                                                                                                                           
               var entity_table = $(msg).find("#program_table tbody").html();                                                                                  
               entity_table = "<tbody>" + entity_table + "</tbody>";                                                                                           
               $("#program_table tbody").replaceWith(entity_table);                                                                                            
             }                                                                                                                                                 
    });

Создание контента

  {% for entity in entities %}                                                                                                                                           
    <tr>                                                                                                                                                               
       <td>                                                                                                                                                            
         <input type="checkbox" name="entity_selection" />                                                                                                             
       </td>                                                                                                                                                           
       <td>{{entity.pk}}</td>                                                                                                                                          
       <td><input type="text" value="{{entity.get_name}}" /></td>                                                                                                      
       <td><input type="text" value="{{entity.get_productionYear}}" /></td>                                                                                            
       <td><input type="text" value="{{entity.get_director}}" /></td>                                                                                                  
       <td><input type="text" value="{{entity.get_cast}}" /></td>                                                                                                      
       <td><input type="text" vaue="blah"/></td>                                                                                                                       
       <td><input type="text" value="{{entity.get_ProgramDetail}}"></td>                                                                                               
       <td>                                                                                                                                                            
           <input type="submit" class="testB" value="Yeni Bölüm"/>                                                                                                     
       </td>

И я хочу предупредить, когда я нажму кнопку testB

   $('.testB').click(function(){                                                                                                                               
       alert("ok");                                                                                                                                            
   });     

1 Ответ

3 голосов
/ 17 февраля 2011

Поскольку вы заменяете содержимое через ajax $('.testB').click() не будет работать, так как я предполагаю, что вы регистрируете этот обработчик событий в готовом документе или что-то подобное. Создание обработчика событий основывается на элементе, присутствующем в DOM во время регистрации. Если вы хотите присоединить обработчик событий к элементу, который еще не добавлен в dom, используйте .live () или .delegate ()

$('.testB').click(function(){                                                                                                                               
       alert("ok");                                                                                                                                            
});

становится

$('.testB').live('click', function(){                                                                                                                               
       alert("ok");                                                                                                                                            
});

Вот пример jsfiddle , который описывает все три сценария.

...