0

私は過去にこのウェブサイトから素晴らしい結果を得ており(読んだ: 昨日)、ここの貢献者がこれを作成しました: http://jsbin.com/awerep/1/edit . 現在選択されているタブを最初のタブと入れ替えたいと思います。Jquery と Javascript の this と first-child セレクターの使用方法を理解するのに苦労しています。最初のメニュー項目を複製し、クリックされたメニュー項目の前に配置し、最初のメニュー項目をクリックされたメニュー項目に置き換えることで、メニュー項目を交換します。jquery の this-child セレクターを使用して、ラッパーの現在の最初の子を判別できると思います。ただし、要素の位置が動的に変更された場合 (replacewith により)、最初の子も動的に更新されますか。それとも、最初の子は要素 1 のままですか?

編集:すべての助けをありがとう。これは私が行ったものです(意図したとおりに実際に動作する最初のものです):http://jsbin.com/olojok/1

4

3 に答える 3

0

(jQuery の場合)Thisは常に現在選択されている要素になります。選択した可能性のある複数の要素から最初の要素を選択したい場合は、単に$('.elements')[0]or$('.elements:first-child')または$('.elements:nth-child(1)')

于 2013-06-12T14:24:17.737 に答える
0

既存の要素を移動すると、DOM から切り離されて適切な場所に再挿入されるだけなので、要素を複製する必要はありません。

を使用.siblings().first()して、現在の要素の最初の兄弟を見つけ、.insertBeforeその要素を現在の要素の前に移動できます。

を使用.prependTo()して、現在の要素をリストの最初の位置に移動できます。

function swapWithFirst(el) {
    var $el = $(el);
    $el.siblings().first().insertBefore(el);
    $el.prependTo(el.parentNode);
}

親にテキスト ノードが含まれていない場合は、中央の行を次のように置き換えることができます。

$el.before(el.parentNode.firstChild);
于 2013-06-12T14:31:16.760 に答える
0

選択したタブを 1 位に移動する場合は、このコードを.click()

$(this).prependTo($(this).parent());

編集:2つのタブを交換したい場合

var $firstTab = $('.menuitem:first');
var $clickedTab = $(this);

$firstTab.insertAfter($clickedTab);
$clickedTab.prependTo($clickedTab.parent());
于 2013-06-12T14:32:06.367 に答える