2011-12-02 5 views
1

나는 이것을 사용해야합니다. .live와 같은 것이 작동하도록하려면 여기에 h3ll을 혼동합니다.jQuery가 ldiv 내용을 새로 고친 후 작동하지 않습니다.

DB에서 가져온 데이터 목록이 있습니다. 각 항목에는 데이터베이스에서 항목을 삭제하기 위해 첨부 된 양식이 있습니다.

확인 여기에 양식에 대한 기능을 제출하는 것입니다 :

$(document).delegate('#delete_cat_form','submit', function() { 

    var cat = $('#cat-name-imput').val(), 
    id = $('#cat-id-imput').val(); 

     $.post("ajax.php", {name:cat,id:id,action:'delete_cat'}, function(data){ 

       //Display a brief message! 
       $("#message").fadeIn(3000).html(data); 

       $("#message").fadeOut(3000).html(data); 

       refreshMenu(); // Refresh Menu      
      }); 

    return false; 

}); 

새로 고침 메뉴 기능이 있습니다 :

function refreshMenu(){ 

    $('.menu-million-dollar-wrapper').load('ajax.php', {action:'refreshMenu'}, function(data){ 

    }); 

} 

기능은 한 번만 문서의 초기로드에서 작동하지만. 아약스가 ajax.php에서 업데이트 쿼리를 반환하면 모든 이벤트 핸들러가 사라지고 다시 작동하지 않는 것처럼 보입니다.

나는 다른 대답을 시도해 보았지만 그 이유는 같을 수는 있지만 몇 가지 이유로 그 개념을 파악할 수는 없습니다.

새 콘텐츠에 대한 쿼리를 수행하고 표시하는 동시에 어떻게 이벤트 처리기를 느슨하게 할 수 있습니까? 여기

호출 반환 ajax.php .. 이것은 원시하지만 난 적은 더 많은 항목이 똑같은 HTML을 반환 않음을 확인하지만, 업데이트 한 것입니다

<form class="edit-button" method="post" action="'.$_SERVER['PHP_SELF'].'"> 
    <input type="hidden" name="name" value="'.$row['name'].'"/> 
    <input type="hidden" name="id" value="'.$row['id'].'"/> 
    <input type="hidden" name="action" value="delete_cat"/> 
    <input type="submit" value="Delete"/> 
</form> 

$_SERVER['PHP_SELF']는 정확하지 않지만해야 이 문제에서 역할을하지 못한다.

이것은 처음로드시 양식을 표시하는 데 사용되는 것과 동일한 코드입니다.

+0

html 구조를 볼 수 있습니까? '# delete_cat_form'이 새로운 내용으로 대체되고있는 것 같습니다. –

+0

관련이 없지만'{name : cat, id : id, action : 'delete_cat'}'대신'$ (this) .serialize()'를 사용해야합니다. 예를 들어 필드를 추가하려면 양식을 최신 상태로 유지해야합니다. – Robin

+0

'

\t \t \t \t <입력 유형\t \t \t \t <입력 유형 = "제출"클래스 = 값 = /> \t \t
' –

답변

0

당신이 언급 한 이후, 대신 ID의 클래스의 모든 요소를 ​​변경 시도 하나 이상이 있다는 것.

$(document).on('submit', '.delete_cat_form', function() { 
    var self = $(this); 

    var cat = self.find('.cat-name-imput').val(), 
    id = self.find('.cat-id-imput').val(); 
+0

이것은 이후로 만들어 지지만 왜 처음로드 될 때 작동합니까? 로드되었습니다 –

+0

정직하게, 아무 생각. 내 생각 엔 ID가 고유해야하기 때문에 특별한 방법으로 처리 될 수 있습니다. 그것은 아주 좋은 추측은 아니지만, 작동 방식에 상관없이 그것은 신경 쓰지 않아야합니다. – rkw

+0

고마워요.............. 문제가 무슨 일인지 알아 내게 나를 인도하는 야생 추적에 나를 인도하겠습니다. 수정 사항이 있지만 내가 실수로 "imput"맞춤법을 알아 냈는지 알 수 없습니다. HTML. 나는 왜 그것이 첫번째 짐에 작동하는지 아직도 모르지만 그것은 지금 작동한다. –

0

이 비동기 실행됩니다

$("#message").fadeIn(3000).html(data); 
$("#message").fadeOut(3000).html(data); 

을 같은 순간에 당신이 페이딩과 같은 메시지를 페이드 아웃된다. 대신 fadeIn이 완료된 후에 fadeOut을 수행해야합니다.

manula, http://api.jquery.com/fadeIn/을 참조하십시오. 첫 번째 매개 변수는 페이드 기능이 완료되면 콜백입니다.

+0

나는 ou를 가져 왔습니다. fadeIn 및 fadeOut 완전히 ... –

0

in jquery 대부분의 것은 콜백 함수를 받아 들일 수 있습니다. 함수가 페이드 후 실행 안에 완료 그렇게 대신

$("#message").fadeIn(3000).html(data); 
$("#message").fadeOut(3000).html(data); 

$("#message").fadeIn(3000, function() { 
    $(this).html(data); 
    $("#message").fadeOut(3000).html(data); 
}); 

에게 물건을 할

+0

이 주셔서 감사합니다 ... 제대로 작동하도록 양식을 얻을 수있을 때 이것을 바꿀 것입니다. –

관련 문제