24

タグ付けプラグインでjQueryのソート可能を使用しています。プラグインはli、実際のアイテムと同じ順序でに関連するオブジェクトの配列を維持します。

並べ替えが完了したら、配列内の項目の順序を更新する必要があります。

私は、開始イベント呼び出し$(ui).index()と更新イベント呼び出しで、最初の位置と最終位置を与える同じものを呼び出すことができると思っていましたが、両方の呼び出しが返され-1ます。

どうすればいいですか?


構造:

<ul>
<li>here<a class="close">x</a></li>
<li>are<a class="close">x</a></li>
<li>some<a class="close">x</a></li>
<li>tags<a class="close">x</a></li>
</ul>

配列構造:

[{
    label: 'here',
    value: 36,
    element: '$(the li that this info is about)',
    index: 0
},
{
    label: 'are',
    value: 42,
    element: '$(the li that this info is about)',
    index: 1
},
{
    label: 'some',
    value: 21,
    element: '$(the li that this info is about)',
    index: 2
},
{
    label: 'tags',
    value: 26,
    element: '$(the li that this info is about)',
    index: 3
}]

JavaScript:

$('ul').sortable({
    start: function(event, ui){...},
    update: function(event, ui){...}
});
4

3 に答える 3

44
$(関数() {
    $( "#sortable" ).sortable({
        更新: 関数 (イベント、UI) {
            console.log('update:'+ui.item.index())
        }、
        開始:関数(イベント、UI){
            console.log('start:' + ui.item.index())
        }
    });
    $( "#sortable" ).disableSelection();
});
于 2012-10-18T21:31:37.820 に答える
12

if .index()が -1 を返す場合、要素が DOM で利用可能になる前にそのリクエストを行っていることを示唆しています。または、セレクターのラベルを誤っており、呼び出し時に存在しないか、 .index() 関数に関して空です

于 2012-05-06T03:26:07.300 に答える
4

次のように、いくつかのデータを各リスト項目に関連付けて追跡できます。

<ul id="sortable">
<li data-id="1" class="ui-state-default">1</li>
<li data-id="2" class="ui-state-default">2</li>
<li data-id="3" class="ui-state-default">3</li>
</ul>

次に、次のように jQuery を介してこのデータにアクセスできます。

$('ul li:nth-child(0)').data('id');
$('ul li:nth-child(1)').data('id');
$('ul li:nth-child(2)').data('id');
于 2012-05-06T03:37:18.130 に答える