有沒有一種方法可以輕鬆實現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