2013-06-13 3 views
0

나는 (내 pageshow 리스너에서) JQuery와 모바일 아코디언 목록은 바인드 해제, JQuery와 모바일 축소

내가 사용 항목 중 하나의 확장을 듣고있어 사용하고 내 응용 프로그램에서

$("#myListSection").bind("expand",function(){}) 

을 확장 페이지가 앞뒤로 전환됩니다. 여러 개의 "확장"구독이 만들어져 문제가 발생하여 목록으로 다시 전환 할 때 섹션을 확장 할 때 여러 함수가 호출 될 수있었습니다. 따라서 리스너를 없애기 위해 페이지를 떠날 때 unbind 메서드를 사용하려고합니다.

문제는 내가 이벤트를 바인딩 해제 한 다음 시도하고 다시 바인딩 할 때 발생합니다.

$("#myListSection").unbind("expand") 
$("#myListSection").bind("expand") 

은 기본적으로 하나의 (선한) 이벤트가 발생되고 확장 지금이 있지만 목록 섹션 ... 난 그냥 내 청취자보다 더 파괴 때어를 생각하고 확장하지 않습니다.

JS 바이올린 예 : http://jsfiddle.net/6txWy/1658/

+0

죄송합니다. http://jsfiddle.net/Palestinian/6txWy/1660/ – Omar

+0

아니요. 확장 리스너를 추가하고 리스너를 제거한 다음 나중에 동일한 div에 다시 첨부하고 싶습니다. – K2xL

답변

1

간단한. 기능을 설정하면 다음과 같은 별도의 기능을 수행하고 싶습니다 :

$('#my-collaspible').bind({ 
    'expand': expand, 
    'collapse': collapse 
}); 

내 코드를 깨끗하게 만들기 때문에이 같은 기능을 전달 선호 :

function expand() {..} 
function collapse() {..} 

그런 다음 이벤트 핸들러는 다음과 같이해야합니다 이해할 수 있는. 그 후에, 주요 부분에 오자.

$(this).unbind('expand', expand); 

두 번째 expand 당신이 전달 된 익명의 기능은 다음과 같습니다 대신 unbind를 사용하고 접을 수와 관련된 모든 기능을 제거하는, 이전에이를 좋아하는 그것을 바인딩 기능을 unbind를 사용합니다. 나중에 필요할 경우 collapsibleexpand()에 다시 바인딩 할 수 있습니다. Collapsibles : - unbind이을 사용하는 경우 jQuery를 접을 수와 관련된 모든 이벤트 데이터를 삭제하는 이유 http://jsfiddle.net/hungerpain/6txWy/1661/

엑스트라 : (다시)

$(this).bind('expand', expand); 

데모 (this 가정하면 여기에 접을 수입니다) 그들은 원주민이 아닌가? 그것들은 toggleClass를 사용하여 jQM에 의해 만들어집니다. toggleClass는 그 자체로 함수이고 click 이벤트 핸들러로 연결됩니다. (작동 방법은 완전하지 않지만 요점은 알 수 있습니다.) 따라서 unbind을 호출하면 모든 것을 소멸시킵니다..

희망이 도움이 :)

PS jQuery를 & jQuery를 모바일의 최신 버전을 사용하는 것을 고려하십시오. 블록에 새로운 어린이가 on인데 많은 방법으로 bind보다 훨씬 낫습니다.