有没有一种方法可以轻松实现nextUntil,以便通过选择器匹配的元素包含在内?我有这个,如果有一个以前的兄弟这是唯一罚款:jQuery nextUntil,包括,不排除匹配的元素?
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
有没有一种方法可以轻松实现nextUntil,以便通过选择器匹配的元素包含在内?我有这个,如果有一个以前的兄弟这是唯一罚款:jQuery nextUntil,包括,不排除匹配的元素?
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
删除.prev()
,并在您选择的末尾使用.addBack()
,如下图所示:
$("#content").find("h3:first").nextUntil("ul:last").addBack().wrapAll("<div id='collapse'></div>");
前1.8应选用andSelf
代替addBack
我找到的解决方法是让length
使用nextUntil
(或prevUntil
),然后在nextAll()
使用slice()
这个长度+ 1:
var inclusiveNextUntil = $(this).nextUntil('.some-class').length;
var inclusiveNextUntil = $(this).nextAll().slice(0 , inclusiveNextUntil + 1);
它的笨拙,但它的工作原理。 HTH
FWIW in the nextAll docs Biziclop mentions加入+ *
:
$obj.nextUntil('.last-item-to-include + *')
但这并不为我工作:/
这是我做的。我认为这比其他建议更清洁。
var elearr = $('selector1').nextUntil('selector2');
var lastele = elearr[elearr.length-1];
elearr.push($(lastele).next());
var s = $("li.start").nextUntil("li.stop");
s = s.add(s.last().next()).add(s.first().prev());
//and do whatever you need to with s
最直观的,我想。所有使用jQuery方法。 无需搜索两次。易于理解和易于记忆。
我认为正确的答案是
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
你能和你的HTML标记的相关部分更新你的问题?这将帮助我们理解你想要达到的目标。 – 2012-03-02 21:03:19