<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    thinking

    one platform thousands thinking

    YAHOO.util.Dom之尋找節(jié)點(轉(zhuǎn))

    YAHOO.util.Dom之尋找節(jié)點

    YUI的Dom方法一共有45個,在這里談一下我學習過程遇到的問題和經(jīng)驗,先介紹17個尋找節(jié)點類型的Dom方法。

    get(el):記得初學JavaScript的時候,最先認識的兩個方法就是getElementById和 getElementsByTagName,這兩個東東也基本上能夠找到大多數(shù)你需要找的東西啦。YUI里的get方法跟getElementById類 似,但是它的能力卻要強很多了,el可以是String、HTMLElement或者Array。

    getElementsBy ( method , tag , root , apply , o , overrides ):這個會和getElementsByTagName比較像一點點吧,但是功能差好遠,基本上getElementsBy應該可以找到一切你想找的元 素,method是定義一個校驗目標元素的方法,返回一個boolean值,tag是目標元素的nodeName,root是指在哪個元素中進行尋找,也 可以說成是一個范圍吧。apply,我必須要說下它。。當初它困擾我了半天,YUI給出的解釋是“A function to apply to each element when found ”,可以理解為一個回調(diào)函數(shù)吧,再看看YUI的代碼,其中有這么一段:

    if (apply) {
    Y.Dom.batch(nodes, apply, o, overrides);
    }

    我當時的理解是,因為最終返回的是一個節(jié)點的數(shù)組嘛,我就以為執(zhí)行完前邊的校驗后得到的結(jié)果再在apply中進行一次,也就是我在apply中再對 結(jié)果元素進行下一步的節(jié)點尋找,那么最后返回的應該是apply執(zhí)行后得到的所有節(jié)點集合。。??墒菬o論我怎么試,最終返回的都是通過method方法所 得到數(shù)組,并沒有再次通過apply獲得更多的元素,嘿嘿,不要見笑哈,當時就是這么想的。。。后來發(fā)現(xiàn),實際上不是這樣子,我理解錯誤的原因只要就在那 個batch上,當時的錯誤在于,我把batch放進getElementsBy里了,那么在batch里邊return后應該不會再繼續(xù)執(zhí)行 return nodes了,但是實際上這里的Y.Dom.batch(nodes, apply, o, overrides)只是一個最終的結(jié)果而已,所以return nodes還是會執(zhí)行的。那么這個apply的作用在何處呢?其實作用就是執(zhí)行一次回調(diào)嘛哈,它是可以實現(xiàn)我之前的想法的,但是不是直接返回的,舉個例 子:

    var uls = YAHOO.util.Dom.getElementsBy(function(el){
    return el.className === 'J_tab';
    },'ul','content');

    這是尋找id為content的容器下className為J_tab的節(jié)點,那么如果我同時還需要獲取每個ul下的所有l(wèi)i節(jié)點該怎么做呢,總不能再來一次循環(huán)吧,當然也可以啦,不過要好好利用下YUI吧,那就是讓它獲取ul的同時獲取li:

    var lis = [];
    function getli(obj) {
    lis.push(obj.getElementsByTagName('li'));
    }
    var uls = YAHOO.util.Dom.getElementsBy(function(el){
    return el.className === 'J_tab';
    },'ul','content',getli);

    OK,這樣子就一舉兩得了哈~后邊的作用域和上下文就不多說啦,關于batch的神奇,下次再說哈,真的很神奇。。。

    getElementBy ( method , tag , root ):這個就是通過method校驗的第一個元素。

    getElementsByClassName ( className , tag , root , apply , o , overrides ):是通過className進行元素尋找,其實這個方法是getElementsBy的一個特殊方法。

    getChildren ( node ):這個與Dom中的childNode類似。

    getChildrenBy ( node , method ):通過method方法過濾子元素,注意參數(shù)的順序以及node不可為id。

    getFirstChild ( node ):尋找第一個子元素,跟Dom中的firstChild有些類似。

    getFirstChildBy ( node , method ):尋找第一個通過method校驗的子元素,注意參數(shù)的順序以及node不可為id。其實這個等同于getChildrenBy得到的第一個元素。

    getLastChild ( node ):尋找最后一個子元素,與Dom中的lastChild有些類似。

    getLastChildBy ( node , method ):與getFirstChildBy相反,倒著尋找。

    getAncestorBy ( node , method ):尋找父節(jié)點,可以無限的往上級尋找,直到找到為止,node不能為id,跟Dom中的parentNode類似,不過這里不用反復的parentNode啦。

    getAncestorByClassName ( node , className ):通過className尋找父節(jié)點,是getAncestorBy的一個特殊方法。

    getAncestorByTagName ( node , tagName ):通過tagName尋找父節(jié)點,是getAncestorBy的一個特殊方法。

    getNextSibling ( node ):尋找緊挨的下一個同級非文本節(jié)點的節(jié)點,與Dom中的nextSibling類似,省去了判斷文本節(jié)點麻煩。

    getNextSiblingBy ( node , method ):無限的往下找直到找到通過method校驗的同級非文本節(jié)點,node不能為id,有了這個方法就不用無限的nextSibling啦。

    getPreviousSibling ( node ):尋找緊挨的上一個同級非文本節(jié)點的節(jié)點,與Dom中的previousSibling類似,可以省去判斷文本節(jié)點的麻煩。

    getPreviousSiblingBy ( node , method ):無限的往前找直到找到通過method校驗的同級非文本節(jié)點,node不能為id。

    posted on 2011-02-01 08:55 lau 閱讀(1456) 評論(1)  編輯  收藏 所屬分類: Web

    Feedback

    # re: YAHOO.util.Dom之尋找節(jié)點(轉(zhuǎn)) 2011-02-01 08:56 lau

    http://blog.csdn.net/ilibaba/archive/2009/06/07/4248932.aspx

    JavaScript(YUI)掃盲  回復  更多評論   

    主站蜘蛛池模板: 亚洲一级毛片免费在线观看| 国产成A人亚洲精V品无码| 国产成人亚洲精品| 日韩精品内射视频免费观看| 亚洲国产日韩一区高清在线| 人妻在线日韩免费视频| 亚洲一区二区三区香蕉| 野花香在线视频免费观看大全| 亚洲热线99精品视频| 无码A级毛片免费视频内谢| 亚洲αv久久久噜噜噜噜噜| 免费国产叼嘿视频大全网站| 久久国产精品亚洲一区二区| 国内精品久久久久影院免费| 亚洲视频在线播放| 97碰公开在线观看免费视频| 亚洲日韩精品无码专区加勒比| 日韩激情淫片免费看| 免费人成视频在线播放| 亚洲色大成网站WWW久久九九| 99久久免费观看| 亚洲伦理中文字幕| 国产公开免费人成视频| 一级做a爱片特黄在线观看免费看| 国产中文在线亚洲精品官网| 九九美女网站免费| 亚洲Av无码一区二区二三区| 日韩免费一区二区三区| 一个人看的www在线免费视频| 久久香蕉国产线看观看亚洲片| 在线视频免费观看高清| 国产天堂亚洲精品| 精品亚洲永久免费精品| 久久国内免费视频| 农村寡妇一级毛片免费看视频| 久久国产精品亚洲综合| 在线免费观看一级毛片| aaa毛片视频免费观看| 亚洲大片免费观看| 亚洲裸男gv网站| 1000部拍拍拍18勿入免费视频下载 |