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 대신 addBack
당신, 그냥 jQuery를 nextAll 사용할 수 있습니다 나는 이전 형제가있는 경우에만 고급 인이 있습니다.
'nextAll'에는 해당 선택 도구와 일치하는 다음 요소가 포함됩니다.
'nextUntil'은 일치하는 selector 요소를 제외합니다.
"next"는 하나의 다음 형제를 얻는 반면 정의 된 끝점까지 모든 형제를 잡아옵니다. – jwinn
예, 내 대답이 바뀌 었습니다. –
-1 : from nextAll() ref : 일치하는 요소 집합의 각 요소에 대해 ** ** ** 형제를 모두 가져오고 선택적으로 선택기로 필터링합니다. 따라서 일치하는 요소가 ** 포함되지 ** 않습니다. –
내가 찾은 해결 방법은이 length
사용 nextUntil
(또는 prevUntil
), 다음 nextAll()
에이 길이 + 1 slice()
을 사용하여 얻을 수 있었다 :
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
가장 직관적, 내 생각의 andSelf
를 사용해야합니다 . 모두 jQuery 메서드로 만들었습니다. 두 번 검색 할 필요가 없습니다. 이해하기 쉽고 기억하기 쉽습니다.
나는 정답은
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
당신이 당신의 HTML 마크 업의 관련 부분과 질문을 업데이트 할 수 있습니다 생각하십니까? 이것은 우리가 당신이 성취하려는 것을 이해하는 데 도움이 될 것입니다. –