w3schools remover removeattr remove quitar attribute atributos jquery jquery-ui jquery-ui-sortable

remover - removeattr display jquery



jQuery ordenable: arrastra y suelta varios elementos (1)

Una forma es crear un ayudante personalizado con los elementos seleccionados, ocultar los elementos mientras se arrastra y anexar manualmente los elementos seleccionados al recibirlos .

Aquí está mi intento:

css

.selected { background:red !important; } .hidden { display:none; }

guión:

$(''.droptrue'').on(''click'', ''li'', function () { $(this).toggleClass(''selected''); }); $("ul.droptrue").sortable({ connectWith: ''ul.droptrue'', opacity: 0.6, revert: true, helper: function (e, item) { //create custom helper if(!item.hasClass(''selected'')) item.addClass(''selected''); // clone selected items before hiding var elements = $(''.selected'').not(''.ui-sortable-placeholder'').clone(); //hide selected items item.siblings(''.selected'').addClass(''hidden''); var helper = $(''<ul/>''); return helper.append(elements); }, start: function (e, ui) { var elements = ui.item.siblings(''.selected.hidden'').not(''.ui-sortable-placeholder''); //store the selected items to item being dragged ui.item.data(''items'', elements); }, receive: function (e, ui) { //manually add the selected items before the one actually being dragged ui.item.before(ui.item.data(''items'')); }, stop: function (e, ui) { //show the selected items after the operation ui.item.siblings(''.selected'').removeClass(''hidden''); //unselect since the operation is complete $(''.selected'').removeClass(''selected''); }, update: updatePostOrder });

$(function () { $(''.droptrue'').on(''click'', ''li'', function () { $(this).toggleClass(''selected''); }); $("ul.droptrue").sortable({ connectWith: ''ul.droptrue'', opacity: 0.6, revert: true, helper: function (e, item) { console.log(''parent-helper''); console.log(item); if(!item.hasClass(''selected'')) item.addClass(''selected''); var elements = $(''.selected'').not(''.ui-sortable-placeholder'').clone(); var helper = $(''<ul/>''); item.siblings(''.selected'').addClass(''hidden''); return helper.append(elements); }, start: function (e, ui) { var elements = ui.item.siblings(''.selected.hidden'').not(''.ui-sortable-placeholder''); ui.item.data(''items'', elements); }, receive: function (e, ui) { ui.item.before(ui.item.data(''items'')); }, stop: function (e, ui) { ui.item.siblings(''.selected'').removeClass(''hidden''); $(''.selected'').removeClass(''selected''); }, update: updatePostOrder }); $("#sortable1, #sortable2").disableSelection(); $("#sortable1, #sortable2").css(''minHeight'', $("#sortable1").height() + "px"); updatePostOrder(); }); function updatePostOrder() { var arr = []; $("#sortable2 li").each(function () { arr.push($(this).attr(''id'')); }); $(''#postOrder'').val(arr.join('','')); }

.listBlock { float: left; } #sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; margin-right: 100px; background: #eee; padding: 5px; width: 300px; border: 1px solid black; } #sortable1 li, #sortable2 li { color:black; cursor: move; margin: 5px; padding: 5px; font-size: 1.2em; width: 250px; background: none; background-color: white; } .selected { background:red !important; } .hidden { display:none !important; } ul { list-style-type: none; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> <div id="maincontainer"> <div id="navtoplistline">&nbsp;</div> <div id="contentwrapper"> <div id="maincolumn"> <div class="text"> <hr /> <div class="listBlock"> <h2>Available</h2> <ul id="sortable1" class=''droptrue''> <li id="article_1">Article #1</li> <li id="article_2">Article #2</li> <li id="article_3">Article #3</li> </ul> </div> <div class="listBlock"> <h2>My Articles</h2> <ul id="sortable2" class=''droptrue''></ul> </div> <br clear="both" /> <p>Which articles, in which order?: <br /> <input type="text" id="postOrder" name="postOrder" value="" size="30" /> </p> </div> </div> </div> </div>

Demostración de JSFiddle

Tengo el siguiente código, que permite al usuario arrastrar y soltar de una lista a otra. Ahora, ¿cómo puedo permitir que el usuario seleccione y arrastre y suelte varios elementos?

¿Algo como esto? http://jsfiddle.net/T68Fn/

Intenté incorporar el código de jsfiddle, pero realmente no puedo hacer que funcione. Cualquier ayuda es muy apreciada.

Por favor, ayúdame. Muchas gracias.

HTML

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <script language="JavaScript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script language="JavaScript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script> </head> <body> <div id="maincontainer"> <div id="navtoplistline">&nbsp;</div> <div id="contentwrapper"> <div id="maincolumn"> <div class="text"> <hr /> <div class="listBlock"> <h2>Available</h2> <ul id="sortable1" class=''droptrue''> <li class="ui-state-default" id="article_1">Article #1</li> <li class="ui-state-default" id="article_2">Article #2</li> <li class="ui-state-default" id="article_3">Article #3</li> </ul> </div> <div class="listBlock"> <h2>My Articles</h2> <ul id="sortable2" class=''droptrue''></ul> </div> <br clear="both" /> <p>Which articles, in which order?: <br /> <input type="text" id="postOrder" name="postOrder" value="" size="30" /> </p> </div> </div> </div> </div> </body> </html>

CSS

.listBlock { float: left; } #sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; margin-right: 100px; background: #eee; padding: 5px; width: 300px; border: 1px solid black; } #sortable1 li, #sortable2 li { cursor: move; margin: 5px; padding: 5px; font-size: 1.2em; width: 250px; background: none; background-color: white; }

GUIÓN

$(function() { $("ul.droptrue").sortable({ connectWith: ''ul'', opacity: 0.6, update : updatePostOrder }); $("#sortable1, #sortable2").disableSelection(); $("#sortable1, #sortable2").css(''minHeight'',$("#sortable1").height()+"px"); updatePostOrder(); }); function updatePostOrder() { var arr = []; $("#sortable2 li").each(function(){ arr.push($(this).attr(''id'')); }); $(''#postOrder'').val(arr.join('','')); }