4

現在、私はs とs を内部に<ul>持つ単純な言語選択を持っています。<li><a>

すべて<li>にクラスがあります -lang-inactiveまたはlang-active. ユーザーが現在使用している言語によって異なります。

<li>.lang-inactiveデフォルトで非表示になっています。.hover()他のulオプションが表示されます。

ホバー - すべての言語 カーソルを合わせていない - 現在の言語

簡単な例を次に示します。

しかし、ご覧のとおり、最初<li>はフランス語で、使用English中に言語バーにカーソルを合わせると、英語の上にフランス語が表示されます。

<li>かどうかに応じてを並べ替える方法はありますlang-activelang-inactive。非アクティブなものは、アクティブなものの下に表示されます。

私の現在のコードは次のとおりです。

var ul = $('#languages-iv');
    ul.css('position', 'absolute');
    ul.css('top', 5);
    li = ul.children('li');

    li.detach().sort(function(a,b) {
       //how do I sort
    });

    ul.append(li);
$("#languages-iv").hover(function(){
    $('.lang-inactive').slideToggle();
}, function() {
    $('.lang-inactive').stop().slideToggle();
});
4

3 に答える 3

3

これは、ページの読み込み時に (または言語セレクターが作成されるたびに) 実行され、アクティブな言語を最初の子にプッシュする必要があります。

$('.lang-active').prependTo('#languages-iv');

デモ:

http://jsfiddle.net/gqfPV/

于 2013-08-07T20:41:25.240 に答える
2
    <ul>
        <li><a href="#" class="lang-active">English</a></li>
        <li><a href="#">French</a></li>
        <li><a href="#">German</a></li>
    </ul>

<script>
    $(document).ready(function(){
        $('ul li').live('click',function(){
            $('li a').removeClass('lang-active');
            var elem = $(this);
            $(this).remove();
            $('ul').prepend(elem);
            $(this).children('a').addClass('lang-active');
        });
    });
<script>
于 2013-08-07T21:00:05.063 に答える
1

これがあなたの並べ替えです:

var listItems = myList.children('li').get();
listItems.sort(function(a,b){
  return $(a).hasClass('lang-inactive') ? -1 : $(b).hasClass('lang-inactive') ? 1 : 0;
});
于 2013-08-07T20:46:49.947 に答える