目前有6個:
.not():基本過濾器 (jQuery 6)已講過
.add():增加選擇的結果
.addBack():增加上一個選擇的結果
.contents():取得元素的子元素,和內容過濾器的「:contents」不一樣,裡面不能放參數
.end():回上一層
.andSelf():包括自己,1.8把它標識為過時了,是過時不是移除,所以還能用
※.add()
$('span, p').css('color', 'red'); $('span').add('p').css('color', 'red'); $('span').css('color', 'red').add('p').css('background-color', 'green'); ---------- <div> <span>A</span> <span>B</span> <span>C</span> </div> <p>p</p>
※第一行是抓元素是span和p;第二行是抓span,然後將p抓進來,所以效果一樣
※第三行抓span先設定顏色再將p抓進來,所以p沒有變紅,一直到後面的綠底會針對全部的元素設定,如果css裡的屬性一樣,後者會蓋前者
※.addBack()
$("div.a").find("p").css('background-color', 'green'); $("div.a").find("p").addBack().css('background-color', 'green'); ---------- <div class="A"> <p> <strong> 1 <code>2</code> </strong> </p> <div class="a"> 3 <p>4</p> <p>5</p> </div> </div>
※第一行還沒加addBack()時,只抓到4和5
※加了之後,會抓到345,也就是抓到$('div.a'),所以才叫addBack
※.contents()
$(function($) { $('div').contents().filter(function(){ alert($(this).text()); return true; }).css('background-color', 'green'); }); ---------- <div> div1 <span class="a">span</span> div2 <p class="b">p</p> div3 <ul> <ol>1</ol> <ol>2</ol> </ul> div4 </div>
※取得div的子元素,所以div1~4不會被選中,其他都會
※.end()
$("div").find("p").find('span').css('color', 'red'); $("div").find("p").find('span').end().css('color', 'red'); $("div").find("p").find('span').end().end().css('color', 'red'); ---------- <div> div <p> p <span>span</span> </p> </div>
※.end()是回上一層
※第一行沒用end()時,抓到的是span而已
※第二行用了一個end(),所以回到上一層p,抓到的是p和span
※第三行用了兩個end(),所以回到上兩層div,抓到的是div、p、span
※.andSelf()
$('span:eq(2)').nextAll().andSelf().css('color', 'red'); ---------- <span>A</span> <span>B</span> <span>C</span> <span>D</span> <span>E</span>
※結果是CDE;若沒加andSelf(),結果會是DE
沒有留言:
張貼留言