2009-09-22 6 views
1

PHP 페이지에서 외부 구성 요소로 빌드 한 다음 일부를 HTML 페이지로로드합니다. 내 PHP는이 목록을 생성 한 후이 같은 구성 요소를 호출하는 JQuery와에 부하를 사용할 수 있도록 예를 들어, 나는, 사이트 전체의 여러 장소에서 구성 요소 "usersList"를 사용할 가능성이있어 :외부 선택 구성 요소의 jquery 변경 이벤트

$("#samaritan").load('usersList.php'); 

그 아름답게 작동하고, 포함 된 문서에 jquery를 작성하여 내 usersList의 val()을 얻을 수 있습니다. 나는 일들이 일어날 수있게하고 싶다.이 목록을 바꾼다. 유일한 문제는 jquery 코드가 원본 구성 요소와 동일한 페이지에있을 때만 변경 이벤트가 시작되는 것입니다. 예를 들어, 다음 코드는이 코드가 select를 생성하는 PHP 페이지에있을 때만 select를 변경할 때 드롭 다운 값으로 경고를 발생시킵니다.

$("select").change(function() { 
       alert("you chose "+$(this).val()); 
      }); 

차라리 바로 내가 행동이 내가 사용하는 다른 장소에서 다른 싶습니다 구성 요소 페이지의 b/C에이 코드를 작성할 필요가 없습니다 것입니다. .blur 사용하여 시도했지만 동일한 결과를 얻을. div에로드되는 select가 포함 된 문서에서 select 이벤트에 대한 change 이벤트를 트리거하는 방법은 무엇입니까?

답변

3

실제로 요소가 DOM에 추가되기 전에 처리기를 추가하는 코드를 실행하는 것처럼 들리 네요. 로드 기능이 작업을 완료 한 후에 핸들러를 추가하는 jQuery 코드가 실행되는지 확인하십시오. 목록을 다시로드하면 처리기를 다시 적용해야합니다. 이를 수행하는 가장 쉬운 방법은 load 메소드 콜백에 ​​핸들러를 적용하는 것입니다. 안타깝게도 변경 이벤트를 지원하지 않으므로 live handlers을 사용할 수 없습니다.

$("#samaritan").load('usersList.php', function() { 
    $("select").change(function() { 
     alert("you chose "+$(this).val()); 
    }); 
}); 
+0

왜 정답이 그렇게 단순 할 수 있습니까? (실제로, 나는 이것보다 더 복잡하지 않기 때문에 기쁩니다). 이것은 아름답게 작동했고, 창조의 순서에 관해 나에게 뭔가를 가르쳐주었습니다. – staypuffinpc

관련 문제