1
$target.after($tq.clone()); 
var $newElement = $target.next();    
$newElement.prevUntil('.question.edit:eq(' + tqIndex + ')')
           .each(function () {
var $elm = $(this).find('input.position');
var val = parseInt($elm.attr('value')); $elm.attr('value', (val - 1));
$tq.detach();

これを使用して、いくつかの要素を移動し、フィールド表示をその位置で整数に更新しています。クローンを作成$tqしてから$('.question.edit:eq(3)') htmlを挿入すると、新しく挿入され$('.question.edit:eq(6)')た のクローンの間の各要素の位置フィールドから1を減算したいとします。は切り離され、カウントは正しいです。$tq$('.question.edit:eq(7)')$tq$('.question.edit:eq(3)')$tq

私が見ているのは、prevUntil()停止nextUntil()せず('.question.edit:eq('+ tqIndex + ')')、指定されたインデックス数の要素よりも低い要素、実際には親までのすべての要素に影響を与えることです。

tqIndex値を正しく渡していないだけかもしれませんが、問題ないようです。

4

1 に答える 1

2

:eq()は、 set 内の指定されたインデックスにある要素に一致します。個々の要素にセレクターを適用するprevUntil()および と一緒に使用するようには設計されていません。nextUntil()

代わりに:nth-child()を使用してみてください:

$newElement.prevUntil(".question.edit:nth-child(" + (tqIndex + 1) + ")")

:nth-child()は 1 ベースであるのに対し、:eq()はゼロ ベースであるため、適切なインデックスを取得するには を追加1する必要があることに注意してください。tqIndex

于 2012-11-30T07:26:14.223 に答える