作者evernever (NeverEver)
看板Ajax
标题Re: [问题] 找出连续具有相同属性的dom物件
时间Sat Nov 20 13:07:54 2010
================
HTML
================
<div id='main>
<div id='a1' class='aaa'></div>
<div id='a2' class='aaa'></div>
<div id='a3' class='aaa'></div>
<div id='c1' class='ccc'></div>
<div id='a4' class='aaa'></div>
</div>
================
jQuery
================
$('.aaa:first-child, :not(.aaa) + .aaa').each(function() {
$(this).
nextUntil(':not(.aaa)').andSelf()
.wrapAll('<div style="border:solid 3px blue" />');
});
概念讲解:
先抓所有绿色 elements, 再用 each 抓每个绿色後面的黄色 elements
每次抓完就马上 wrapAll
※ 引述《Futurend (未来)》之铭言:
: ※ 引述《evernever (NeverEver)》之铭言:
: : ================
: : HTML
: : ================
: : <div id='main>
: : <div id='a1' class='aaa'></div>
: : <div id='a2' class='aaa'></div>
: : <div id='a3' class='aaa'></div>
: : <div id='c1' class='ccc'></div>
: : <div id='a4' class='aaa'></div>
: : </div>
: : ================
: : jQuery
: : ================
: : var list = $(".aaa:first").nextUntil(":not(.aaa)").andSelf();
: : alert(list.size()); // 应该是 3 个
: 整理前辈得指导後修正写法如下
: $('.quick').each(function () {
: var $this = $(this);
: if (!$this.data('done'))
: $this.nextUntil(':not(.quick)').andSelf()
: .wrapAll('<div style="border:solid 3px blue" />')
: .data('done', true);
: }).removeData('done');
: 这样已经可以达到我要的效果
: 只是想请问这样的code还有没有改善的空间呢
: 或着有哪些应注意还没注意到的事情
※ 引述《Futurend (未来)》之铭言:
: ※ 引述《evernever (NeverEver)》之铭言:
: : ================
: : HTML
: : ================
: : <div id='main>
: : <div id='a1' class='aaa'></div>
: : <div id='a2' class='aaa'></div>
: : <div id='a3' class='aaa'></div>
: : <div id='c1' class='ccc'></div>
: : <div id='a4' class='aaa'></div>
: : </div>
: : ================
: : jQuery
: : ================
: : var list = $(".aaa:first").nextUntil(":not(.aaa)").andSelf();
: : alert(list.size()); // 应该是 3 个
: 整理前辈得指导後修正写法如下
: $('.quick').each(function () {
: var $this = $(this);
: if (!$this.data('done'))
: $this.nextUntil(':not(.quick)').andSelf()
: .wrapAll('<div style="border:solid 3px blue" />')
: .data('done', true);
: }).removeData('done');
: 这样已经可以达到我要的效果
: 只是想请问这样的code还有没有改善的空间呢
: 或着有哪些应注意还没注意到的事情
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.64.54.125