多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > 譯文:JavaScript框架比較(二)

譯文:JavaScript框架比較(二)

來源:程序員人生   發布時間:2014-03-29 08:29:26 閱讀次數:2841次
DOM遍歷

基于ID、元素類型、類名查找元素非常有用,但是如果你想基于它在DOM樹中的位置來查找元素該怎么辦?換句話說,你有一個給定的元素,你想查找它的父元素、子元素中的一個、它的上一個或下一個節點兄弟節點。例如,采用下面這段零碎的HTML代碼:

清單1:HTML碎片(一個table)

<table>
<thead>
<tr>
<th>Name</th>
<th>Email Address</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr id="row-001">
<td>Joe Lennon</td>
<td>joe@joelennon.ie</td>
<td><a href="#">Edit</a>
<a href="#">Delete</a></td>
</tr>
<tr id="row-002">
<td>Jill Mac Sweeney</td>
<td>jill@example.com</td>
<td><a href="#">Edit</a>
<a href="#">Delete</a></td>
</tr>
</tbody>
</table>
清單1使用縮進來說明其中每個元素節點在DOM樹中的位置。在這個實例中,table元素是根元素,有兩個子節點thead和tbody。thead元素有一個tr子節點,tr有三個孩子--所有的th元素。tbody元素有兩個tr子節點,每個tr節點有三個孩子。在上述每一行的第三個節點中進一步包含子節點,都是兩個鏈接標記。

正如你知道的那樣,你可以使用一個JavaScript框架的選擇函數通過ID很輕松的選擇一個元素。在這個實例中,有兩個元素擁有ID,它們是ID分別為row-001和row-002的tr元素。使用Prototype庫選擇第一個tr,可以使用下面的代碼:

var theRow = $('row-001');
在上一章,你還了解到,基于元素的類型或class使用選擇器來獲取元素。在這個實例中,你可以使用下面的語法來得到所有的td元素。

var allCells = $$('td');
改代碼的主要問題在于它返回了每一個td 元素。但是,如果你只想得到ID為row-001的tr的所有td元素該怎么辦?這正是DOM遍歷函數發揮作用的地方。首先,讓我們使用原型來選擇ID為row-001的tr的所有的子級。

var firstRowCells = theRow.childElements();
這將返回theRow變量(你最初設置的ID為row-001的tr)所有子元素的數組。

接下來,我們假設你只想得到該行的第一個子元素。在本例中,即包含“Joe Lennon”文本的td元素。要做到這一點,使用下面的語句:

var firstRowFirstCell = theRow.down();
真簡單!這個特定的使用方法等價于:

var firstRowFirstCell = theRow.childElements()[0];
也可以這樣表示:

var firstRowFirstCell = theRow.down(0);
JavaScript的索引從零開始,所以上面的語句主要告知JavaScript來選擇第一個子元素。要選擇第二個子元素(單元格包含電子郵件地址joe@joelennon.ie),你可以這樣用:

var firstRowSecondCell = theRow.down(1);
或者,你可以在兄弟節點之間瀏覽DOM。本例中,第二個單元格是第一個單元格的下一個兄弟節點。因此,你可以使用下面的語句:

var firstRowSecondCell = firstRowFirstCell.next();
與down()函數工作一樣,選擇第三個單元格可以這樣使用。

var firstRowThirdCell = firstRowFirstCell.next(1);
除了使用索引來查找特定節點外,Prototype庫還可以使用CSS選擇器語法。在清單1中,我們要找到第二個包含 Jill Mac Sweeney’ 詳細信息的鏈接(“刪除”鏈接)。

var secondRowSecondLink = $('row-002').down('a', 1);
在本例中,使用$函數來查找ID為row-002的那一行,向下遍歷到第二個后代a元素(錨點)。

一些框架還允許“菊花鏈式”的遍歷功能,這意味著你可以彼此連接遍歷命令。上面的例子中,Prototype庫的另一種表達方式是這樣的:

var secondRowSecondLink = $('row-002').down('a').next();
看看下面的例子:

var domTraversal = $('row-001').down().up().next().previous();
正如你所見,菊花鏈允許你連接多個DOM遍歷語句。事實上,上述例子實際上最終選擇ID為row-001的tr元素,所以菊花鏈又回到了開始的地方。

轉載地址:http://www.denisdeng.com/?p=708

原文地址:http://www.ibm.com/developerworks/web/library/wa-jsframeworks/index.html

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品自在线拍国产 | 欧美性videosex18 | 中文字幕网站在线观看 | 亚洲一区二区三区久久 | 亚洲精品亚洲人成人网 | 欧美综合区 | 最近的免费中文字幕视频 | 欧美日韩激情一区二区三区 | 欧美老人巨大xxxx做受视频 | 欧美性视频网站 | 亚洲精品大片 | 精品国产福利久久久 | 秋霞午夜鲁丝片午夜精品久 | 久久精品国产6699国产精 | 成年人天堂 | 国产三级精品三级在线观看 | 精品一区二区三区中文字幕 | xxxx性xx另类| 久久久国产成人精品 | 久久思热| www色网站| 18videosex性欧美69 | 国产欧美在线观看不卡一 | 欧美a在线观看 | 最近最新中文字幕大全手机在线 | 国产福利一区二区三区 | 精品一区二区三区免费观看 | 久久精品播放 | 欧美成人精品高清在线播放 | 欧美在线视频 一区二区 | 最新福利在线 | 国产精品久久毛片蜜月 | 亚洲精品高清在线 | 性freesexvideo xxx | 日本一区二区成人教育 | 成人午夜视频在线观看 | 一区二区中文字幕亚洲精品 | 亚洲一区二区三区不卡视频 | 动漫精品在线 | 久久久久久一品道精品免费看 | 国产成人精品久久一区二区小说 |