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中指定索引处的元素。它不是为与 and 一起使用而设计的prevUntil()nextUntil()后者将选择器应用于单个元素。

尝试使用:nth-child()代替:

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

请注意,它:nth-child()是从一开始的,而:eq()从零开始,因此您必须添加1tqIndex获取适当的索引。

于 2012-11-30T07:26:14.223 回答