2013-03-12 16 views
24

jquery uiを1つのリスト項目に対してのみ無効にすることはできますか?ここ はコードの例です:jquery uiは1つのli項目に対して並べ替えを無効にします

例えば
<ul class="sortable"> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
    <li>Item 5</li> 
</ul> 

私はアイテムをクリックしたときに、私はソート可能無効になります。 助けてください。ここで

はjavascriptのコードです:あなたがしてソートすることができない可能項目を指定することができitems optionを使用することにより

$(".sortable").sortable({ 
     items: "li:not(.unsortable)" 
    }); 
$(".sortable").disableSelection(); 

$(document).ready(function(){ 
    $('.sortable li').click(function(){ 
     // Disable sortable for this item............. 
    }); 
}); 
+1

[何を試しましたか](http://whathaveyoutried.com)あなたのJavascriptを含めることはできますか? –

+2

http://api.jqueryui.com/sortable/#option-cancel < - 検索に5秒かかりました。 – Mahn

+0

[jquery-ui sortableの複製が可能、アイテムの移動を防止](http://stackoverflow.com/questions/2006401/jquery-ui-sortable-prevent-item-from-being-moved) – Tibo

答えて

41

確かに、このような何かを試してみてください。

jsFiddle example

+0

リストアイテムをクリックすると無効になる可能性があります –

+0

意味が分かりません。 – j08691

+0

たとえば$( '。sortable li')です。クリック(function(){/ *このアイテムを無効にする* /}); –

20

明示的に(それらを含めないことにより、脇)の項目を除外することができます

$(".sortable").sortable({ 
    cancel: ".disable-sort-item" 
}); 
+2

実装するのが最も簡単です。 –

+0

これは簡単ですが、無効になっている項目はリストグループ内で上下に移動できます。 j08691の答えはすべてのシナリオで有効です。 –

4

私が知っている、この質問が古いです。しかし、私はあなたに正解を知らせます。動的に項目を無効にしてクリックで有効にする方法 私は2016年に同じ問題を抱えています:D

まずは、 あなたがしなければならないことは、開始時に無効にされるものをソート可能に設定することです。 (それは最初のinitに必要な)リストから無効な項目を削除するどのようなパラメータを追加します。

var sortable = $("#sortable-sections"); 
sortable.sortable({ 
    items: 'li:not(.ui-state-disabled)', 
    helper: 'clone', 
}); 
sortable.disableSelection(); 

(例で使用されるブートストラップ)

をそれからちょうど イベントリスナーを追加し、私はのonClickを使用するので、ここでは例:

sortable.find('li').click(function() { 
    $(this).toggleClass('ui-state-disabled'); 
    $(this).hasClass('ui-state-disabled') ? $(this).removeData('sortableItem') : false; 
}); 

sortable-itemはsortableItemと呼ばれるデータがある場合にのみソート可能であるため、動的に無効にします。

乾杯!

関連する問題