2010-03-01 8 views
1

일부 데이터를 구문 분석하고 일부 클래스가 여기 저기에 던져진 결과와 동일한 결과를 얻었습니다.jquery가 콜백 후 작동하지 않습니다.

$(document).ready(function() { 
    $("div.rating div").click(function(){ 
    var str = $(this).attr('alt'); 
    var b = str.split("-"); 
    var book = b[0]; 

    $("div.book-" + book).load("sites/all/modules/rm_raamaturiiul_rating/rating.php", { query: str }); 
    }); 
}); 

결과를로드 한 후 jquery는 확인하지 않습니다. 예를 들어, div를 클릭하면 요청을 보낸 다음 동일한 ID 및 클래스 이름을 사용하여 div를 다시 작성하고 다시 작성하지만 그 후에 jquery는 해당 클릭을 무시합니다. 나는 심지어 .load 전에 alert()를 넣었지만 jquery는 처음으로 작업을 마친 후에 건너 뜁니다. 나는 게시물을 시도했지만 jq는 단순히 div에서 기능을 시작하지 않습니다.

답변

2

재로드 된 콘텐츠에 이벤트 처리기가 연결되어 있지 않기 때문입니다. live() 메서드를 사용하여 데이터를 첨부하면 데이터를 다시로드 한 후 작동하거나 데이터를로드 한 후 수동으로 연결합니다 (첫 번째 방법은 더 간단합니다).

3

$(...).click(function)을 호출하면 jQuery 객체 에 현재이 포함 된 특정 요소에 대한 click 이벤트가 처리됩니다.
.load을 호출하면 요소가 이벤트 처리기가없는 새 요소로 바뀝니다.

언제든지 선택기와 일치하는 모든 요소에 대해 이벤트를 처리하는 .live을 호출해야합니다.

$("div.rating div").live("click", function() { ... }); 
+1

한 포괄적 인 설명은 예를 들면 다음과 같습니다

관련 문제