之前做的一些JQUERY應用都是些很基礎的編程,對於選擇器要求不高,像類似於“$('.class')”、“$('#id')”、“$('#id>.class')”、“$(this)”、“$(this).parent()”、“$(this).children()”這些簡單的語句都能解決的。
問題的出現是我要選擇一個ul裡某個的li中的一個span,因為要利於編程,li是用 $('ul>li').eq(i) 來做的選擇,雖然問題還是能用之前的方法解決,但總感覺代碼有點臃腫,而且效率也很低下。既然JQUERY被譽為目前所有JS框架中最高效的代碼,不可能連這個問題都要用一大坨代碼來解決吧!
回頭再翻翻JQUERY的API,才發現有一個非常適合這個場合使用的語句我一直沒有注意過。那就是:$(選擇器一).find(選擇器二)。之前雖然讀過find這段介紹,但一直因為用不到而被忽視。
這裡說說find()的使用方法
API提供的的解釋:搜索所有與指定表達式匹配的元素。這個函數是找出正在處理的元素的後代元素的好方法。
使用方法:$(選擇器一).find(選擇器二);
以小劇客棧首頁的焦點圖,查找類為“.focusphoto”的DL下DD中的span並將其作淡出處理為例:
代碼如下:
$('.focusphoto>dl>dd).eq(i).find(”span”).fadeOut('slow');
談談小劇對find()的理解
我這個應用實際上完全可以用children()來代替,但這並不是說find()和children()的用法是一樣的,如果是這樣的話find()的存在便沒有了意義。在查詢深度為一級的時候,這兩者有相同之處,但區別就在於:find()是子查詢選擇器,它可以深入到子級的下層進行查詢選擇;而children():只是子級選擇器,它只能選擇下一層級的元素。
當然,以上僅僅是劇中人的一點拙見,如有錯誤或不完善的地方,請給於指正,謝謝!