Pergunta

Isto tem-me perplexo. Os códigos de follow retorna ",,,,,,":

<script type="text/javascript">
$(function() {
    $('#listB').sortable({
        connectWith: '#listA',
        update: function(event, ui) {
            var result = $(this).sortable('toArray');
            alert(result);
            }
    });
    $('#listA').sortable({
        connectWith: '#listB'
    });
});
</script>

<div id="boxA">
    <ul id="listA" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

<div id="boxB">
    <ul id="listB" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

Por que ?! Isso está me deixando louco! Alguma sugestão?

Foi útil?

Solução

.sortable('toArray') serializa itens Ids em array, e seus itens não têm IDs, É por isso que você tem strings vazias.

Outras dicas

Você pode definir qual atributo para buscar assim:

var result = $(this).sortable('toArray', {attribute: 'value'});

Eu estava tendo esta questão, bem, exceto eu tinha id em meus elementos, do jQuery classificáveis ??( 'toArray') muito foi atingida uma falta no retorno os ids, no entanto, você pode agarrá-los em JavaScript usando o seguinte:

function getSortOrder() {
    var children = document.getElementById('sortedElement').childNodes;
    var sort = "";
    for (x in children) {
        sort = sort + children[x].id + ",";
    }
    return sort;
}

Isto, obviamente, retorna o ID do em uma string delimitada por vírgulas, mas você pode retornar a matriz. Eu tenho certeza que há uma maneira melhor de resolver este problema, esta é apenas a solução que eu encontrei.

Eu vejo algumas respostas puramente javascript. Eles trabalham, mas cuidado, eles podem não devolver os itens na ordem em que é visível na tela. Usando o código abaixo, veja jtsalva acima, irá devolver os itens na ordem de classificação adequada. Este tinha-me perplexo por um tempo porque eu queria salvar a nova ordem a um banco de dados, para que eu pudesse recarregar a grade onde alguém parou.

var result = $(this).sortable('toArray', {attribute: 'value'});

Para usar outro atributo que você pode fazer isso:

$('#element').sortable('toArray' {attribute: 'value'})

Isso fará com que ele para que ele agora usa o 'valor' atributo do seu código.

Documentação sobre método Ordenável toArray

Se serialize devolve uma cadeia vazia, verifique se os atributos id incluem um sublinhado. Eles devem estar sob a forma: "set_number" Por exemplo, uma lista de três elementos com ID de atributos "foo_1", "foo_5", "foo_2" serializará para "foo [] = 1 & foo [] = 5 & foo [] = 2". Você pode usar um sublinhado, sinal de igual ou hífen para separar o conjunto e número. Por exemplo "foo = 1", "foo-1", e "foo_1" tudo a serializar "foo [] = 1".

jq referência classificáveis ??

.

$ ( 'classificáveis ??') classificáveis ??(' toArray'); apenas irá processar o primeiro elemento da classe classificáveis ??. Você pode analisar todos os elementos usando cada :

$('.sortable').each(function(){
    result.push($(this).sortable('toArray'));
})
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top