有没有办法轻松做nextUntil,以便包含选择器匹配的元素?我有这个,如果有一个以前的兄弟,这是很好的:
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
答案 0 :(得分:21)
删除.prev()
并使用选择器末尾的.addBack()
,如下所示:
$("#content").find("h3:first").nextUntil("ul:last").addBack().wrapAll("<div id='collapse'></div>");
Pre 1.8应使用andSelf
代替addBack
答案 1 :(得分:1)
我找到的解决方法是使用length
(或nextUntil
)获取prevUntil
,然后在slice()
上使用此nextAll()
长度+ 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 + *')
但这对我不起作用:/
答案 2 :(得分:1)
这就是我的工作。我认为它比其他建议更清晰。
var elearr = $('selector1').nextUntil('selector2');
var lastele = elearr[elearr.length-1];
elearr.push($(lastele).next());
答案 3 :(得分:0)
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方法制作。 无需搜索两次。易于理解且易于记忆。
答案 4 :(得分:0)
我认为正确答案是
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
答案 5 :(得分:0)
正如其他人所回答的那样,使用.addSelf()
是使起始元素具有包容性的解决方案。
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
为了使结束元素具有包容性,使用.nextUntil(".class + *")
方法解决了问题。
$("#content").find("h3:first").nextUntil("ul:last + *").addSelf().wrapAll("<div id='collapse'></div>");
答案 6 :(得分:-1)