2011-07-28 6 views
1

여기 내 문제는 DOM 내에서 버블 링하는 것입니다. 왜냐하면 저는 여러 페이지를 내 페이지 매김 안에 넣었고 클래스 링크를 여러 번 클릭하면 버블이 발생하고 계속해서 같은 파일이로드됩니다. 이 문제를 해결하는 더 좋은 방법을 알고 싶습니다. click 이벤트의 여러 실행을 방지하기 위해Jquery의 돔을 버블 화하기

$('.edit').live('click', function(e) { 
    e.preventDefault(); 
    var contentPageID = $(this).attr('id'); 
    $('div.right_content').load('modules/forms/edit/contentpages.php?contentPageID=' + contentPageID); 
}); 
+1

질문에 대한 오해 일 수도 있습니다. 첫 번째 클릭 후 링크 작동을 중지 하시겠습니까, 아니면 일종의 이벤트 버블 링/전파로 인해 이벤트가 두 번 이상 발생합니까? – aepheus

+0

이벤트가 일종의 이벤트 버블 링/전파로 인해 두 번 이상 발생했지만 ShankarSangoli의 응답이 내 코드와 함께 작동했습니다. –

+1

이벤트를 두 번 이상 첨부 할 가능성이 있습니까? 이 이벤트가 첨부하는 html을 게시 할 수 있습니까? – aepheus

답변

2
e.stopPropagation(); 

return false; 
2
var b = 0; 

$('.edit').live('click', function(e) { 
    e.preventDefault(); 
    if(b==0){ 
    var contentPageID = $(this).attr('id'); 
    $('div.right_content').load('modules/forms/edit/contentpages.php?contentPageID=' + contentPageID); 
} 
b++; 
}); 
+3

다음에 클릭하면 어떻게됩니까? 모두 버블 링을 방지하기 위해 전역 변수를 갖는 것은 나쁜 생각처럼 보입니다. – aepheus

2

, 처음 이후 unbind가 :

$('.edit').live('click', function(e) { 
    e.preventDefault(); 
    var contentPageID = $(this).attr('id'); 
    $('div.right_content').load('modules/forms/edit/contentpages.php?contentPageID=' + contentPageID); 
    $('.edit').unbind('click'); 
} 
+0

시도해 보았지만 여전히 똑같은 일을했습니다. –

2

시도
$('.edit').live('click', function(e) { 
    e.preventDefault(); 
    var contentPageID = $(this).attr('id'); 
    if($('div.right_content').data("currentPage") != contentPageID){ 
    $('div.right_content').data("currentPage", contentPageID).load('modules/forms/edit/contentpages.php?contentPageID=' + contentPageID, 
    function(){ 
     $('div.right_content').data("currentPage", null); 
    }); 
    } 
}); 
+1

@ 제프 - 너 해봤 니? – ShankarSangoli

+0

예 나는이 모든 것을 시도해 보았습니다. 그리고 이것은 제 코드로 작업 한 1 개입니다. 고맙습니다. –

+1

이 답변의 문제점은 1이로드되어있어 사용자가 페이지 1에서 2, 페이지 2에서 2를 빠르게 누르는 경우입니다. – aepheus