3

jquery sortable plugin에 문제가 있습니다. 실제로, 나는 아코디언과 분류가 가능한 항목 (질문)을 가지고있다.아코디언 헤더에서 클릭이 이벤트 전파되는 것을 방지하려면 어떻게해야합니까?

각 질문 아코디언에 추가 콘텐츠를 표시하려면 sortable 업데이트 이벤트를 사용합니다.

그러나 문제는 질문을 정렬 한 후 이동 한 아코디언이 자동으로 열립니다.

는 여기에 문제 재현 간단한 예입니다 : 질문을 정렬 http://jsfiddle.net/JwzH2/1/

시도를, 당신은 (제대로 때때로 작동, 그래서 다시 시도 할 수 있습니다) 아코디언 개방 자체를 볼 수 있습니다.

누군가가 문제를 해결하는 방법에 대해 알고 있습니까?

편집 : Fosco는 부분적으로 작동하는 솔루션을 제공했지만 여전히 문제가 있습니다.> 동적으로 추가 된 요소에는 문제가 있습니다 (그의 답변에 대한 내 의견 참조).$('.hidden-content', question).show();:

은 또한, 나는 여전히이 선없이 작업 코드를보고 놀라게하고있다. http://jqueryui.com/demos/accordion/sortable.html

$(function() { 
    var stop = false; 
    $("#accordion h3").click(function(event) { 
     if (stop) { 
      event.stopImmediatePropagation(); 
      event.preventDefault(); 
      stop = false; 
     } 
    }); 
    $("#accordion") 
     .accordion({ 
      header: "> div > h3" 
     }) 
     .sortable({ 
      axis: "y", 
      handle: "h3", 
      stop: function() { 
       stop = true; 
      } 
     }); 
}); 
</script> 

공지 사항의 사용 : 사실, 이벤트 전파는 같은과와

http://jsfiddle.net/JwzH2/38/

+2

정렬을 위해서는 클릭해야합니다 ... 아코디언의 클릭 처리기는 일단 요소를 놓으면 적용됩니다. 매번 저를 위해 일어난 일입니다 ... 닫힌 것을 움직이면 열리고 열린 것을 움직이면 닫힙니다. – Fosco

답변

8

내가 당신의 대답은의 jQuery UI에서 샘플 코드 여기에있다 생각이 줄없이해야한다 stop 변수 및 분류 메커니즘과 클릭 핸들러 모두에 의해 어떻게 잡히고 조작되는지를 보여줍니다.

편집 : 오늘 아침에 동적 콘텐츠 문제로 약간의 시간을 보냈습니다. 새 항목이 추가되면 아코디언 및 적절한 클릭 핸들러를 삭제하고 다시 설정합니다. 클릭 핸들러 설정과 아코디언 설정을 함수로 이동하고 처음에 호출하고 새 항목을 추가 할 때 호출합니다. 너무 빨리 일어나서 깜박 거리거나 시각적 인 문제는 보이지 않지만 마일리지는 다를 수 있습니다. 여기에 총을내어주세요 : http://jsfiddle.net/JwzH2/41/

+0

감사합니다;)하지만 '라이브'방법이 효과가없는 이유를 알고 있습니까? 에서는 event.preventDefault(); 정지 = false를 } '$ ("#accordion의 H3") .live (경우 (정지) { event.stopImmediatePropagation() 함수 (이벤트) { 를 '클릭' 사실, 요소를 동적으로 추가해야하기 때문에 간단한 'click()'메서드가'dom-loaded '요소에 대해 작동하지 않습니다. –

+0

'live'대신'delegate'을 시도해 보았습니다. 하지만 작동하지 않습니다 : http://jsfiddle.net/JwzH2/37/ –

+0

또한, 내가 이해하지 못하는 또 다른 것이 있습니다. '$ ('. hidden-content', question) .show();'라인에 주석을 달면 완벽하게 작동하는 이유는 무엇입니까? 이벤트 전파는 동일해야합니다 .. –