2012-10-18 1 views
0

나는 내 머리 부분에 이것을 가지고있다. 내가 원하는어떻게 JQuery prepend()에 의해 HTML의 머리 부분에 추가 된 요소에 자바 스크립트를 구현하려면?

<script type="text/javascript" src="post.js"></script> 

이 또 다른 JS는 main.js로 이름 파일 새로 만든 elements.My에 구현 될 수 post.js 다른 PHP 파일에서 데이터를 가져 와서 앞에 추가 코드를 이전에로드 된 Div는 post.js 파일과 잘 작동하지만 새로운 요소가 추가 될 때 새로운 요소에 대해서는 작동하지 않습니다.

var auto_refresh8 = setInterval(function() { 
    var id = "id="+$(".ally:first").attr("id"); 
    $.ajax({ 
     type: "POST", 
     url: "get_post.php", 
     data: id, 
     cache: false, 
     success:function(html){ 
      $('#display').prepend(html); 
     } 
    }); 
},2000); 

이 JQuery와 아약스 요청이 get_post.php 파일에서 데이터를 얻을 사업부 디스플레이에 앞에 추가 : 여기에 PHP 파일에서 데이터를 가져 와서 앞에 추가 내 main.js 코드입니다. post.js의 코드는 this에서 작동하지 않습니다. jquery ajax 요청에 의해 반환 된 데이터에는 keypress 함수가 작동 할 때 제출해야하는 클래스 comm이있는 div가 들어 있습니다.

$(document).ready(function() { 
    $(".comm").keypress(function(e) { 
     if(e.which == 13) { 
      var id = $(this).attr("id"); 
      var data = 'id=' + id; 
      var post = $(this).val(); 
      var data1 = 'comment='+post; 
      var wholedata = data+'&'+data1; 

      $(this).blur(); 
      $.ajax({ 
       type: "POST", 
       url: "c_insert.php", 
       data: wholedata, 
       cache: false, 
       success:function(html){ 
        $('.class_all'+id).append(html); 
       } 
      }); 
      return false; 
     } 
    }); 
}); 

답변

0

이 post.js 대신 파일에서 이벤트를 처리 할 대리자를 사용

다음은 post.js의 코드입니다. 자세한 내용은 jQuery documentation을 참조하십시오. 이 같은

뭔가를 수행해야합니다

$('#display').on('keypress', '.comm', function (e) { 
    if(e.which == 13) { 
    // Do code on event 
    } 
}); 

주 기능 "에서"에만 사용되어야한다는 것을 당신이 jQuery를 버전 1.7 이상을 사용하는 경우. 이전 버전에서는 "delegate"함수를 사용합니다.

편집 모든 '.comm'요소는 '# 표시'의 하위 항목이므로 $ (document) .on (...)을 $ ('# display').

+0

위대한 사람은 당신이 jquery의 진짜 기술을 가지고 일하고 있습니다. 고마워. – Heart

+0

5 개의 질문 중에서 정답을 준 사람은 항상 내 레포를 줄였습니다 ... 이제는 1 점입니다. – Heart

관련 문제