2011-02-17 4 views
1

Curently 나는 django와 prpject를 개발하고 있는데, 내보기 중 하나는 ajax 호출과 replaceWith 함수를 통해 테이블을 채 웁니다. 이상한 점은 내 html 소스가 변경되지 않지만 크롬의 inspect 인수에서 모든 테이블 내용을 볼 수 있다는 것입니다. 그리고 생성 된 컨텐트에서 ID 나 클래스를 얻고 싶다면 jQuery는 아무 것도 찾을 수 없습니다.jQuery의 replaceWith 함수를 사용한 후에 ID 또는 클래스에 접근하는 방법은 무엇입니까?

그래서 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

코드를 볼 수 없다면 제대로하고 있는지 확인하기가 어렵습니다. –

답변

3

$('.testB').click()을 통해 내용을 바꿀 예정이므로이 이벤트 핸들러를 문서 준비 또는 비슷한 것으로 등록한다고 가정 할 때 작동하지 않습니다. 이벤트 핸들러를 생성하는 것은 등록 시점에 dom에있는 요소에 의존합니다. 아직 하나 .live() 또는 .delegate()

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

을 사용하여에 DOM 모양에 추가하는 요소에 이벤트 핸들러를 첨부하려면 여기

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

설명 jsfiddle에 대한 예입니다됩니다 세 가지 시나리오 모두.