Re: [問題] 找出連續具有相同屬性的dom物件

看板Ajax作者 (NeverEver)時間15年前 (2010/11/20 13:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
================ 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
文章代碼(AID): #1CvrUj0V (Ajax)
文章代碼(AID): #1CvrUj0V (Ajax)