2012-09-17 5 views
3

sortstop 이벤트를 수동으로 트리거하여 jQuery 정렬 가능 컨트롤을 트리거 할 수 있습니까?jQuery를 수동으로 정렬 가능 sortstop 이벤트 트리거

나는 $(selector).trigger('sortstop')을 시도했지만 아무 것도 보이지 않습니다.

관련 HTML의 일부 :

<div data-zone="name"> 
    <div class="section disabled" id="section-1">Some section template 1</div> 
    <div class="section" id="section-2">Some section template 2</div> 
    <div class="section" id="section-3">Some section template 3</div> 
</div> 

<button class="trigger-button">Trigger stop</button> 

와 자바 스크립트의 일부 : 문제의

$("[data-zone]").sortable({ 
    placeholder: 'ui-state-highlight', 
    cancel : ".section.disabled", 
    stop: function(){ 
     console.log('sort-stopped');   
    } 
}) 

$(".trigger-button").click(function(){ 
    console.log('trigger-button clicked'); 
    var $zone = $('[data-zone]'); 
    console.log($zone); 
    $zone.trigger('sortstop'); 
}); 

JsFiddle.

+0

왜 수동으로 sortstop을 트리거해야합니까? stop 함수의 내용을 다른 함수에 넣을 수는 없습니까? 그리고 두 번째 함수를 직접 호출할까요? – Nal

+0

주요 문제는 코드의 클로저입니다. 영역에 대한 참조가있는 동안 섹션 당 이동을 가능하게하는 섹션 당 '토글 이동'이 있습니다. 나는 다른 모든 컨트롤이 숨겨져 있기 때문에 이동을 취소 할 바디 클릭 핸들러를 갖고 자 시도하고있다. 나는 적절한 폐쇄와 함께 그것을 해결했다고 생각합니다. 잠시 jsfiddle을 업데이트하겠습니다. –

답변

0

이벤트는 jQuery UI에서 코드에 어떤 일이 발생했는지를 알려주기 위해 사용되며 다른 방법으로는 발생하지 않습니다.

// Are you looking for this? 
$(".selector").sortable("cancel"); 

// Or this? 
$(".selector").sortable("enable"); 
$(".selector").sortable("disable"); 

또한 더 "sortstop"이벤트가 없습니다 :

당신은 당신이 아니라 트리거 이벤트에 의해 UI 요소를 제어하는 ​​것보다컨트롤에 정렬 개체를 사용할 수 있습니다 방법을 찾고해야합니다. 정렬 작업이 완료되거나 완료 될 때 sortables가 트리거하는 "stop"이벤트 및 "beforeStop"이벤트가 있지만 정렬 가능한 객체에 의해 전송되며 정렬 가능한 객체에서 읽지 않고 작업을 수행합니다.

당신이 정말로 당신이 어떤 작업을 수행 할 수 있도록 이러한 이벤트를 수신하는 것이었다 원하는 것을한다면, 이것은 당신이 수행 할 수 있습니다 것입니다 :

더 많은 정보가 JQuery와 UI의 문서에서 찾을 수 있습니다

$("[data-zone]").on('stop', function(evt, ui) { 
    // sortable has notified that it has stopped, do stuff here 
}); 
정렬 :

http://api.jqueryui.com/sortable/ 또한

, 여기 github의에 sortable.js 소스 파일입니다

https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.sortable.js

관련 문제