Jquery multiple sortable list
Can someone please explain how to take the code below.
Here is a screenshot
alt text http://img196.imageshack.us/img196/9514/picture4omk.png
this is my JS
$(document).ready(function(){
$(function() {
$("#sortable1, #sortable2").sortable(
{ connectWith: '.connectedSortable',
opacity: 0.6,
cursor: 'move',
update: function() {
var order = $(this).sortable("serialize");
$.post("home/updateBOX", order, function(theResponse){
$("#contentRight").html(theResponse);
});
}
});
});
});
This is my current view
<div id="contentLeft">
Category 1
<ul id="sortable1" class="connectedSortable">
<?php foreach($getcat1->result() as $box) :?>
<li id="recordsArray_<?php echo $box->boxID ?>"><?php echo $box->boxID . ". " . $box->boxID . $box->boxText ?></li>
<?php endforeach; ?>
</ul>
Category 2
<ul id="sortable2" class="connectedSortable">
<?php foreach($getcat2->result() as $box) :?>
<li id="recordsArray_<?php echo $box->boxID ?>"><?php echo $box->boxID . ". " . $box->boxID . $box->boxText ?></li>
<?php endforeach; ?>
</ul>
</div>
This is my current controller
function index()
{
// Boxes
$this->db->order_by('boxListingID','ASC');
$this->db->where('boxListingCat',1);
$data['getcat1'] = $this->db->get('boxes');
$this->db->order_by('boxListingID','ASC');
$this->db->where('boxListingCat',2);
$data['getcat2'] = $this->db->get('boxes');
// Initialize
$this->layout->set('nav', $this->class);
$this->layout->load('layout','home/home_view',$data);
}
function updateBOX()
{
if (empty($_POST)) { return false; }
$updateRecordsArray = $_POST['recordsArray'];
$listingCounter = 1;
foreach ($updateRecordsArray as $listingCounter=>$recordIDValue) {
$this->db->set('boxListingID',$listingCounter+1)->where('boxID',$recordIDValue)->update('boxes');
}
}
}
Please, help!
I tried very hard to make the following code work so that when dragging an li from one UL to another, it would find it in the new UL and save that data. I don't know where to start
I will be very grateful for any help.
How about using draggable and droppable plugins in jQuery UI
Draggable plugin makes selected items draggable with the mouse.
The Droppable plugin provides a drop target for dragged objects.
a source to share
If you want to create multiple sorters, it is best to do so by adding classes to the list of all types. The link above uses divs, but you can apply it to lists.
Let's say you have a list of questions:
<div id='questionList'>
<div class='question'>
<div>Question Details</div>
<div class='answerForQuestion'>
<div class='answer'>Answer 3
<span>Details</span>
</div>
<div class='answer'>Answer 2</div>
<div class='answer'>Answer 4</div>
</div>
</div>
<div class='question'>
<div>Question Details</div>
<div class='answerForQuestion'>
<div class='answer'>Answer 2</div>
<div class='answer'>Answer 7</div>
<div class='answer'>Answer 11</div>
</div>
</div>
</div>
Here's what you do in jQuery:
$('#questionList').sortable(); // this makes one each major category sortable
$('.answerForQuestion').sortable({ // this makes sub categories sortable
connectWith: ['.answerForQuestion']
change: // this fires everytime the item you drag is moved, put in your logic here, such as an ajax call to update your database
});
a source to share