0

목록에서 대상을 아코디언으로 드래그 할 수있는 상황이 있습니다. 그러나 끌고있는 항목이 다른 패널 (열려 있지 않은 패널)에있을 수도 있습니다.jqueryui 아코디언 이벤트 핸들러를 "click"에서 "mouseover"로 동적으로 변경합니다.

이 작업을 용이하게하려면 드래그가 시작되면 아코디언의 이벤트를 클릭에서 마우스 오버로 동적으로 변경하고 싶습니다. 드래그가 완료되면 다시 클릭으로 전환합니다. 이렇게하면 사용자가 닫힌 패널 위로 마우스를 올려 놓을 때 항목을 놓을 수있는 지점이 열리게됩니다. 작업이 완료되면 패널을 열기 위해 클릭을 사용하는 것이 좋습니다.

이것이 가능합니까? 나는 setter를 사용해 보았습니다 :

$ (".selector") .accordion ("option", "event", 'mouseover');

하지만 실제로는 이벤트를 변경하지 않는 것 같습니다. 이것이 지원되지 않을 수도 있다는 언급을 발견했습니다. 그렇지 않다면 누구든지 내가 어떻게 할 수 있는지 알고 있니?

답변

0

요소 드래그 이벤트 핸들러에서 setter를 사용해야합니다. 다음과 같은 것이 작동해야합니다.

$('li.draggable').mousedown(function(){ 

    $("div.accordion").accordion("option", "event", 'mouseover'); 

}).mouseup(function(){ 

    $("div.accordion").accordion("option", "event", 'click'); 

}); 

선택기를 특정 케이스에 맞게 조정해야합니다. mousedown 이벤트 핸들러는 사용자가 드래그 가능한 요소를 클릭하고 아코디언의 event 설정을 'mouseover'로 변경하면 트리거됩니다. 클릭이 해제되고 드래그가 끝나면 아코디언의 event 설정이 '클릭'으로 되돌아갑니다.

+0

응답 해 주셔서 감사합니다. 그것은 쉬운 부분입니다. 내가 아는 문제는 아코디언이 실제로 동적으로 이벤트를 변경하지 않는 것입니다. 설정할 수는 있지만 값은 변경되지만 이벤트는 여전히 같은 방식으로 트리거됩니다. 나는 $ ("div.accordion") .accordion ("option", "event", 'mouseover')을 사용하여 파이어 버그 명령 행에 설정하려고 시도했다. 그리고 작동하지 않습니다. – jjross

관련 문제