jQuery學習筆記之JavaScript腳本庫和元素選擇器研究[圖]

jQuery學習筆記之JavaScript腳本庫和元素選擇器研究[圖]
jQuery是一套JavaScript腳本庫,相當於Java的類庫,將一些工具方法或者對象方法封裝在類庫中,方便用戶使用。
工廠函數指的是這些內建函數都是類對象,當你調用他們時,實際就是創建了一個類實例。
一.jQuery基本選擇器包括:ID選擇器,元素選擇器,類名選擇器,多種匹配條件選擇器,通配符選擇器。
1.ID選擇器(#id)
jQuery中的id選擇器相當於JavaScript中的document.getElementById()方法;
JavaScript只能調用DOM方法,jQuery可以調用DOM方法,也可以調用jQuery封裝的方法。
頁面中如果出現了兩個相同的id的屬性值,程序運行時會報出JS運行錯誤的對話框,所以要保證id屬性值唯一。
2.元素選擇器(element)
元素選擇器是根據元素名稱匹配相應的元素,元素選擇器匹配的是一組元素。它是jQuery包裝集,是一組Object對象,需要使用索引器來獲取單獨的文本信息。
eq()和 get(),默認都是從0開始計數
eq()方法返回的是一個jQuery包裝集,所以只能調用jQuery方法
get()方法返回的是一個DOM對象,所以調用DOM對象的方法
3.類名選擇器(.class)
類名選擇器是通過元素擁有的CSS類的名稱查找匹配的DOM元素

jQuery學習筆記之JavaScript腳本庫和元素選擇器研究[圖]
4.複合選擇器(select1,select2,select3,selectN)
複合選擇器將多個選擇器組合在一起,用逗號分隔開,只要符合任何一個篩選條件就會匹配,返回的是一個jQuery包裝集,利用索引器可以獲取集合中的對象。
5.通配符選擇器(*)
二.層級選擇器
層級選擇器就是根據頁面上的DOM元素之間父子關係作爲匹配的篩選條件。
jQuery提供的層級選擇器的有:
1.ancestor descendan選擇器
用於給定的祖先元素下匹配的所有後代元素
2.parent  > child選擇器
該選擇器只能選擇父元素下直接的子元素
3.prev+next選擇器
用於匹配所有緊接在prev後面的next元素,pre與next是兩個相同的元素
4.prev~sibling選擇器
用於匹配prev之後的所有sibling元素,其中prev和sibling是兩個同輩元素
三.過濾選擇器
過濾選擇器包括
1.簡單過濾器
以冒號開頭,通常實現簡單過濾效果的過濾器
2.內容過濾器
通過DOM元素包含的文本內容以及是否含有匹配的元素進行篩選
:contains(text)匹配包含給定文本的元素
:empty匹配不包含子元素或者文本的元素
:has(selector)匹配含有選擇器匹配元素的元素
:parent匹配含有子元素或者文本的元素
3.可見性過濾器
可見性過濾器就是利用元素的可見狀態匹配元素,因此,可見性過濾器也有兩種,一種是匹配所有可見元素的:visible過濾器,另一種是匹配不可見元素的:hidden過濾器
在應用:hidden過濾器的時候,display屬性是none以及input元素的type屬性爲:hidden的元素都會被匹配到
4.表單對象的屬性過濾器
表單對象的過濾器是通過表單元素的狀態屬性匹配元素,包括:
1.checked過濾器:匹配所有被選中的元素
2.disabled過濾器:匹配所有不可用的元素
3.enabled過濾器:匹配所有可用的元素
4.selected過濾器:匹配所有選中的option元素
5.子元素選擇器
子元素選擇器就是篩選給定某個元素的子元素,具體過濾條件由選擇器的種類而定
:first-child匹配所有給定元素的第一個元素
:last-child匹配所有給定元素的最後一個元素
:only匹配元素中唯一的子元素
:nth-child匹配父元素下的第N個子或奇偶元素,index從1開始,而不是從0開始
四.屬性選擇器
屬性選擇器就是通過元素的屬性作爲過濾條件進行篩選
五.表單選擇器
表單選擇器就是匹配經常在表單中出現的元素,但是匹配的元素不一定在表單中。
jQuery方法:
val():獲取文本框的值
ready():當頁面元素載入完成時就自動執行程序,自動爲按鈕綁定單擊事件
html():設置元素的文本內容
addClass():爲元素添加CSS類
removeClass():移除元素的CSS類
java同步容器類的問題,vector等:
大家都知道java中的同步容器類是線程安全的,但是在某些情況下可能需要額外的客戶端加鎖來保護複合操作。容器上的常見的複合操作是:穆斯林的葬禮讀書筆記(http://www.simayi.net/dushubiji/895.html)心得感悟,迭代(遍歷完容器中的所有容器),跳轉(根據指定順序找到當前元素的下一個個元素)以及條件運算 。最常見的例如”若沒有則添加“(檢查map中是否存在key值,不存在再添加)。
在同步容器類中,這些複合操作在沒有客戶端加鎖的情況下仍然是線程安全的,但當其他線程併發地修改容器時,他們可能出現意料之外的行爲。
例如以下vector的getLast和setLast操作。雖然大家都知道vector是線程安全的,但是在VectorDemo中getLast不是線程安全的,因爲list.size()和list,get()這兩個對list的操作不能保證他們倆的原子性,list.size()的結果在執行list.get()時可能已經發生狀態了(被其他線程對list的remove所破壞)。讓其變成線程安全的辦法就是註釋裏的內容,就是鎖住list。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章