2011-02-17 61 views
1

我正在用django開發一個prpject,我的一個視圖通過ajax調用和replaceWith函數填充表。奇怪的是,我的html源碼不會改變,但我可以從chrome的檢查參數中看到所有表格內容。當我想從生成的內容中獲取一個id或類時,jQuery找不到任何東西。如何在使用jQuery的replaceWith函數後到達id或class?

所以我用錯誤的方式使用replaceWith?以及如何從新生成的內容中選擇元素?

下面是代碼:

jQuery的部分

$('#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");                                    
    });  
+2

如果我們無法看到代碼,很難說是否正確。 – 2011-02-17 11:49:26

回答

3

由於您通過ajax替換內容$('.testB').click()將不起作用,因爲我認爲您正在文檔準備好或類似事件中註冊該事件處理程序。創建事件處理程序依賴於註冊時在dom上存在的元素。如果您想將事件處理程序附加到尚未在使用任何.live().delegate()

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

被追加到DOM的外觀元素變得

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

這裏是jsfiddle一個例子描述所有三種情況。