在我们使用jQuery的replaceWith函数后如何到达id或类?

时间:2011-02-17 11:45:45

标签: jquery django jquery-selectors replacewith

当然我正在使用django开发一个prpject,我的一个视图通过ajax调用和replaceWith函数填充表。奇怪的是,我的html源代码没有改变,但我可以看到chrome的inspect参数中的所有表格内容。当我想从生成的内容中获取id或类时,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 个答案:

答案 0 :(得分:3)

由于您要通过ajax $('.testB').click()替换内容将无法正常工作,因为我假设您在文档就绪或类似的东西中注册该事件处理程序。创建事件处理程序依赖于registratoin时dom上存在的元素。如果要将事件处理程序附加到尚未附加到dom的元素,请使用.live().delegate()

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

成为

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

以下是jsfiddle上描述所有三种情况的示例。