prevUntil(' .class')和nextUntil(' .class')似乎不适合我,选择超出指定的元素

时间:2012-11-30 07:18:22

标签: jquery jquery-selectors

$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)')并在$('.question.edit:eq(6)')之后插入html,然后我想从新插入的$tq克隆中的每个元素位置字段中减去1 ,$('.question.edit:eq(7)')以及$tq$('.question.edit:eq(3)')更新位置/计数。然后分离$tq并且计数正确。

我看到的是prevUntil()nextUntil()不会停留在('.question.edit:eq('+ tqIndex + ')')并且会影响低于指定索引计数的元素,实际上所有元素都会直到父级

也许我只是没有正确传递tqIndex值,但似乎没问题。

1 个答案:

答案 0 :(得分:2)

:eq()匹配集合中指定索引的元素。它不适用于prevUntil()nextUntil(),它们将选择器应用于各个元素。

请尝试使用:nth-child()

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

请注意,:nth-child()是基于一的,而:eq()是从零开始的,因此您必须将1添加到tqIndex以获取相应的索引。