Reputation: 20183
I am trying to let user sort this kind of markup
<div id="steps">
<div class="sort">
<span></span>
<textarea/>
</div>
<div class="sort">
<span></span>
<textarea/>
</div>
<div class="sort">
<span></span>
<textarea/>
</div>
<div class="sort">
<span></span>
<textarea/>
</div>
</div>
And i am trying like this:
$('.sort').sortable({placeholder: "ui-state-highlight",helper:'clone'}).disableSelection();
But i am getting very unexpected behavior, please check:
how can i do it to only let user sort by the step number? (but sort the whole item as a block)
Upvotes: 33
Views: 70061
Reputation: 1547
I believe the following fiddle is what you're after: http://jsfiddle.net/GA4Qs/13/
jQuery sortable needs to be applied to the parent element containing the elements you want to be sorted.
$('#psP').sortable({placeholder: "ui-state-highlight",helper:'clone'});
Also you didn't close your divs in the right place.
<div style="position: relative;" class="sortable">
<span class="stepNum inset">1</span>
<textarea placeholder="Escribe que hay que hacer en este paso" class="step valid"></textarea>
</div>
Not
<div style="position: relative;" class="sortable">
<span class="stepNum inset">1</span>
<textarea placeholder="Escribe que hay que hacer en este paso" class="step valid"></textarea>
<div style="position: relative;" class="sortable">
Upvotes: 28
Reputation: 310
You're turning .sort into the sortable, when .sortable() should be called on the container of the items you want to sort. What your code does is create 5 separate sortable lists.
Switch to selecting based on the parent container, and it works:
Upvotes: 8
Reputation: 218892
This one is working fine for me. I changed your selector to use the class name"nubeT"
$(function() {
$('.nubeT').sortable({
placeholder: "ui-state-highlight",
helper: 'clone'
});
});
Upvotes: 1