0

jqueryの並べ替え可能な機能を使用して、アプリケーション内のアイテムのリストを並べ替えています。リストがかなり大きくなっているのを見て、展開または折りたたむことができるサブリストにリストを再編成することにしました。

私が持っていたアイデアは、ユーザーがサブリストのヘッダー上に要素をドラッグし、そこにカーソルを750ミリ秒間保持すると、リストが展開されるというものでしたが、基になるdivのIDのIDを取得できないという問題が発生しました。 jqueryは、ドラッグしているアイテムのIDを取得しているようであり、カーソルを合わせているものではありません。

これを達成するために使用できる機能またはプラグインはありますか(私がこの問題を抱えているのは私が最初ではないと確信していますが、私のgooglefuは私に関連するものを見つけることができませんでした)。

助けてくれてありがとう:)

編集:

これが私がやろうとしていることのアイデアです:

$('.categoryLi').hover(function(){expandCategory(this.id);});

function expandCategory(id)
{
    if(sectionDraggingMode)
    {   
        $(document).oneTime('750ms', 'expandCategoryTimer', function(){$('#'+id+' .category_content').show();});
    }
}

そして、これが私のHTMLの要点です。

<ul class="category">
    <li class="categoryLi" id="c8">
            <div class="sublistHeader"></div>
            <div id="cat_8_container" class="category_content" style="display: none;">
            //sortable list here
            </div>
    </li>
    <li class="categoryLi" id="c9">
            <div class="sublistHeader"></div>
            <div id="cat_9_container" class="category_content" style="display: none;">
            //other sortable list here
            </div>
    </li>
</ul>

.categoryLiにカーソルを合わせると、expandCategoryを呼び出して、カーソルを合わせている要素のIDを送信しますが、ドラッグしている要素の親を除いて、.categoryLiコンテナのカーソルをトリガーすることはありません。一瞬。その背後にある「覗き見」の方法を見つける必要があります。したがって、#c9からアイテムをドラッグしている場合、 jqueryは常に#c9にカーソルを合わせていると考えます。

4

1 に答える 1

1

これには、jqueryのdroppableを使用できることがわかりました。展開のトリガーとして使用する領域をドロップ可能な領域として定義し、overイベントがトリガーされたときにそれを実行しました。

$('.categoryLi > .toolbar').droppable({
    accept: ".sectionLi",
    over: function(event, ui){
        $(this).siblings('.category_content').show();
        $('.section').sortable('refreshPositions');
    }
});

この修正にはいくつかの問題がありますが、少なくともホバーの問題は解決しました。これが将来誰かを助けることができることを願っています。

于 2010-12-23T15:30:40.823 に答える