2010-04-03 3 views
0

안녕하세요. 방금 .live 및 .die로 실험을 시작했으며 멋진 결과를 얻었지만 한 가지가 작동하지 않습니다.jQuery .die가 첨부 된 이벤트를 죽이지는 않습니까?

필자는 작성한 코드를 사용하여 방화범이 끌려 와서 필자가 .die가 첨부 된 이벤트를 죽이지 않는 이유를 알아낼 수 있는지 살폈다.

우선은 아약스 화재 오프 링크를 클릭하고 내 서버 측 코드가 인라인 편집 양식을 주입 할 때 예상대로 내가 그런 다음이

//attach ajax submission 
    $('a[href$=edit]').live("click", function(event) { 
     $.get($(this).attr("href"), null, null); 
     return false; 
    }); 

을합니다.

는하지만 가끔은 내가이 동작을 해제하고 또한 내가이 작동하지만 경우에하는 것은이를 제거하고 아무튼 아래의 코드와 그 아약스 선 (善)을 복원하려고

//unbind ajax form creation when we click on a link, then disable its semantic behaviour 
    $('a[href$=edit]').die("click").click(function(){ return false; }); 

다음을 수행 그래서 unclickable 링크를 만들고 싶어 대신 링크가 끊어지지 않습니다. 나는 이유를 알 수 없다? 누구든지 도와 줄 수 있습니까?

//remove any previous events from the links 
    $('a[href$=edit]').die(); 
    //attach ajax submission 
    $('a[href$=edit]').live("click", function(event) { 
     $.get($(this).attr("href"), null, null); 
     return false; 
    }); 

답변

1

는이 작업을 수행해야한다 : 코드 .click(function(){ return false; });

$('a[href$=edit]').die().unbind('click'); 

이 부분은 정상적인 .bind('click') 선언, 그래서 당신은 .unbind('click')으로 죽일 필요 .live() 없습니다.

+0

당신을 감사 전화를해야합니다. 필자는 몇 시간 동안 코드를 살펴 봤지만 그 길잃은 클릭을 놓쳤습니다. 고맙습니다. – robodisco

+0

@adam - 환영합니다. –

1

die()live()에 바인딩 된 이벤트에만 작동합니다.

당신은 click()을 사용하여 이벤트가 바인딩되어 있습니다. 대체 얼굴은 bind()입니다. 이 방법으로 바인드 된 이벤트는 unbind()을 사용하여 언 바운드되어야합니다.

+0

머리가 올라간 것에 감사드립니다. 모두 좋다. – robodisco

1

클릭라이브 (클릭) 같은 내부 - 동작하지 않습니다 또는 바인드 (클릭)

  1. 클릭이 immediatly의 각 요소에 이벤트를 추가를 jQuery 선택기
  2. live (클릭) 클릭 대기 어디에서나 해당 클릭이 jQuery 선택기와 일치하는 요소에서 완료되었는지 확인합니다.

라이브의 대응이 죽게됩니다 호출 : 당신이 패턴 # 2를 중지하지 패턴 # 1

당신이 패턴 # 1을 통해 추가 된 이벤트를 제거하려면 내가 잘못가는 곳에 정확히 파악을 위해 때어

제롬 와그너

+0

ahhhh 나는 놓치기를 놓친 것을 직접 클릭하십시오.고맙습니다. 지금 일하고있어. – robodisco

관련 문제