2015-06-16 39 views
2

jQuery的變化上課的時候排序

//JavaScript 
 

 
$(function() { 
 
    $("#sortable1, #sortable2").sortable({ 
 
    connectWith: ".connectedSortable" 
 
    }).disableSelection(); 
 
});
/*CSS*/ 
 

 
#sortable1, #sortable2 { 
 
    border: 1px solid #eee; 
 
    width: 142px; 
 
    min-height: 20px; 
 
    list-style-type: none; 
 
    margin: 0; 
 
    padding: 5px 0 0 0; 
 
    float: left; 
 
    margin-right: 10px; 
 
} 
 
#sortable1 li, #sortable2 li { 
 
    margin: 0 5px 5px 5px; 
 
    padding: 5px; 
 
    font-size: 1.2em; 
 
    width: 120px; 
 
}
<!--My HTML --> 
 

 
<ul id="sortable1" class="connectedSortable"> 
 
    <li class="ui-state-default">Item 1</li> 
 
    <li class="ui-state-default">Item 2</li> 
 
    <li class="ui-state-default">Item 3</li> 
 
</ul> 
 

 
<ul id="sortable2" class="connectedSortable"> 
 
    <li class="ui-state-highlight">Item 1</li> 
 
    <li class="ui-state-highlight">Item 2</li> 
 
    <li class="ui-state-highlight">Item 3</li> 
 
</ul>

我的問題: 當從一個ul當時lili元素移動到另一個ul包含類的變化。

exa。從ulliul當時li類更改ui-state-defaultui-state-highlight

您可以編輯成爵士小提琴 http://jsfiddle.net/fo51dggo/

+0

我不認爲你的問題很清楚 – Andrew

回答

3

有一種可停止的排序方法。更改課程

停止事件在排序停止時觸發。

嘗試這樣

​​

Fiddle

+0

這隻適用於elem從左到右移動,但不適用於elem從右到左移動。請參閱'http:// jsfiddle.net/fo51dggo/2 /' –

+0

我已經更新了我的回答 –

+0

我有第二個問題,當你將元素移動到同一個塊當時也是類更改但它不好,我的意思是元素移入當時同一個班級的班級不變。 –

0

使用,當你放下投擲的對象,執行相應的功能drop(event, ui)。您可以使用:

ui.item.addClass("ui-state-highlight"); 

裏面的drop(event, ui)功能。更多信息在Droppable - Event Drop

1

可以使用stop事件來處理類的變化,

start: function (event, ui) { 
     $currParent = ui.item.parent(); 
}, 
stop: function (event, ui) { 
    if(!ui.item.parent().is($currParent)) ui.item.attr('class', ui.item.siblings().attr('class')) 
} 

Fiddle Demo

ui.item是表示當前拖動元素的jQuery對象。


全碼:

$(function() { 
    var $currParent; 
    $("#sortable1, #sortable2").sortable({ 
     connectWith: ".connectedSortable", 
     start: function (event, ui) { 
      $currParent = ui.item.parent(); 
     }, 
     stop: function (event, ui) { 
      if(!ui.item.parent().is($currParent)) ui.item.attr('class', ui.item.siblings().attr('class')) 
     } 
    }).disableSelection(); 
}); 

這將改變ui-state-defaultui-state-highlight,反之亦然。

+0

當你將元素移動到同一個塊的時候也有一個問題,這並不好,我的意思是當元素進入同一個區塊的時候,班級不會改變。 –

+0

啊,是的。更新了我的答案。有一種更高效的方式,使用'ui.sender'請參閱-http://api.jqueryui.com/sortable/#event-stop。但由於某種原因,這在您的jQuery UI版本中不受支持。 –