jquery - change class name when dragged and dropped and vice versa - jqueryUI -
i'm using jqueryui drag/drop list items 1 list sortable list. there anyway can change class of dropped item 'sortedli' 'droppedli' when dropped all-colls-list sortable list coll-selected-list , vice versa? when drop it, retains original class name.
$(function() { var lists = [{"listid":"#all-colls-list", "connectid":"#coll-selected-list", "drop":true}, {"listid":"#coll-selected-list", "connectid":"#all-colls-list", "drop":true}]; $.each(lists, function(i, list) { $(list.listid).sortable({ connectwith: list.connectid, droponempty: list.drop }); }); }); <ul id="all-colls-list" class="droptrue ui-sortable"> <li class="sortedli">ahsbah</li> <li class="sortedli">bachs</li> <li class="sortedli">stah</li> </ul> <ul id="coll-selected-list" class="droptrue ui-sortable"> <li class="sortedli" style="">blah</li> <li class="sortedli" style="">blah</li> <li class="sortedli" style="">blah</li> </ul>
here complete solution changing class when on drag , drop events occurred using jquery ui.
html:
<ul id="all-colls-list" class="droptrue ui-sortable"> <li class="sortedli"> ahsbah </li> <li class="sortedli"> bachs </li> <li class="sortedli"> stah </li> </ul> <ul id="coll-selected-list" class="droptrue ui-sortable"> <li class="sortedli" style=""> blah </li> <li class="sortedli" style=""> blah </li> <li class="sortedli" style=""> blah </li> </ul>
css:
#all-colls-list{ display:inline-block; width:200px; border:1px solid #331299; background-color:#1177a8; height:auto; } #coll-selected-list{ display:inline-block; width:200px; border:1px solid #331299; background-color:#a14466; height:auto; } #all-colls-list li, #coll-selected-list li{ list-style:none; } #all-colls-list li:hover, #coll-selected-list li:hover{ cursor:move; border:2px solid #a1b177; } .dropped{ background-color:#2277a7; } .sorted{ background-color:#a74455; }
jquery:
var lists = [{ "listid": "#all-colls-list", "connectid": "#coll-selected-list" }, { "listid": "#coll-selected-list", "connectid": "#all-colls-list" }]; //apply sort on each list $.each(lists, function(i, list) { $(list.listid).sortable({ connectwith: list.connectid, opacity: 0.7, start: function(event, ui) { if ($(ui.item).parents('#all-colls-list').length > 0) { $(ui.item).addclass('dropped'); } else { $(ui.item).addclass('sorted'); } }, stop: function(event, ui) { if ($(ui.item).parents('#all-colls-list').length > 0) { $(ui.item).switchclass('droppedli', 'sortedli'); } else { $(ui.item).switchclass('sortedli', 'droppedli'); } $(ui.item).removeclass('sorted'); $(ui.item).removeclass('dropped'); } }); });
note: please note before run above script, have include either full or min versions of latest jquery.js , latest jquery ui java script files.
i have created bin solution on http://codebins.com/codes/home/4ldqpc3
Comments
Post a Comment