Toni Michel Caubet
Toni Michel Caubet

Reputation: 20183

jquery .sortable() on <div>

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:

http://jsfiddle.net/GA4Qs/8/

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

Answers (3)

Leonard Garvey
Leonard Garvey

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

Magneon
Magneon

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:

http://jsfiddle.net/vRCp8/1/

Upvotes: 8

Shyju
Shyju

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'
    });

});​

http://jsfiddle.net/GA4Qs/11/

Upvotes: 1

Related Questions