3

jQueryソート可能なコントロールのソートストップイベントを手動でトリガーすることは可能ですか?

試してみ$(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>

および JavaScript の一部:

$("[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

4

1 に答える 1

0

イベントは jQuery UI によって使用され、コードで何かが発生したことをコードに通知しますが、その逆ではありません。

イベントをトリガーして ui 要素を制御しようとするのではなく、並べ替え可能なオブジェクトを制御するために使用できるメソッドを探す必要があります。

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

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

「sortstop」イベントもありません。ソートが終了したとき、または終了しようとしているときに sortables がトリガーする「stop」イベントと「beforeStop」イベントがありますが、これらはソート可能オブジェクトによって送信され、アクションを実行するためにソート可能オブジェクトによって読み取られることはありません。

いくつかのアクションを実行できるようにこれらのイベントをリッスンすることが本当に必要な場合は、次のようにします。

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

詳細については、ソート可能の jQuery UI ドキュメントを参照してください。

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

また、github の sortable.js ソース ファイルは次のとおりです。

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

于 2013-12-20T17:00:25.350 に答える