1星掰、選擇器
在CSS中選擇器的作用是選擇頁面中某一類(類別選擇器)元素或者某一個(gè)元素(ID選擇器)
多望,而jQuery中的"$"作為選擇器,同樣是選擇某一類或某一類元素便斥,只不過jQuery提供了
更多更全面的選擇方式晋渺。并且為用戶處理了瀏覽器的兼容問題
(1)CSS可以通過如下代碼來選擇<h2>標(biāo)記下包含的所有子標(biāo)記<a>,然后添加相應(yīng)的樣式風(fēng)格
h2 a{
/添加CSS屬性/
}
而在jquery中則可以通過如下代碼來選中<h2>標(biāo)記下包含的所有子標(biāo)記<a>,作為一個(gè)對(duì)象數(shù)組能颁,供javascript使用
$("h2 a")
(2)jquery中選擇器的通用語法如下:
$(selector)
或者
jQuery(selector)
其中selector符合CSS3標(biāo)準(zhǔn)
(3)id選擇器,相當(dāng)于javascript中的document.getElementById("#showDiv“")
可以看到j(luò)Query的表示方法簡(jiǎn)潔很多
$("#showDiv“)
(3)類別選擇器犬金,選擇CSS類別作為”SomeClass“的所有節(jié)點(diǎn)元素念恍, 在javascript中要實(shí)現(xiàn)相同的選擇,
需要用for循環(huán)遍歷整個(gè)DOM
$(".SomeClass")
(4)選擇所有位于奇數(shù)行的<p>標(biāo)記晚顷, 幾乎所有的標(biāo)記都可以使用": odd" 或者 ": even" 來實(shí)現(xiàn)奇偶的選擇
$("p : odd")
(5)所有表格行的第一個(gè)單元格峰伙,就是第一列。這在修改表格的某一列的屬性時(shí)是非常有用的该默。不再需要一行行遍歷表格
$("td:nth-child(1)")
(6)子選擇器瞳氓,返回<li>標(biāo)記的所有子元素<a>,不包括孫標(biāo)記
$("li > a")
(7)選擇所有超鏈接,并且這些超鏈接的href屬性是以"pdf"結(jié)尾的栓袖。有了屬性選擇器匣摘,可以很好的選擇頁面中的各種特性元素
("a[href=pdf]")
注意:
在jQuery中美元符號(hào)"$"其實(shí)就等同于"jQuery",從jQuery的源碼中可以看出
為了編寫代碼的方便裹刮,通常都采用"$"來代替"jQuery"
2音榜、功能函數(shù)前綴
在javascript中,開發(fā)者經(jīng)常要便攜一些小函數(shù)來處理各種操作細(xì)節(jié)捧弃,例如在用戶提交表單時(shí)赠叼,
需要將文本框中的最前端和最末端的空格清理掉,javascript沒有提供類似trim()的功能违霞,而引入
jQuery后嘴办,便可以直接使用trim()函數(shù),例如
$.trim(sString);
以上代碼相當(dāng)于:
jQuery.trim(sString);
即trim()函數(shù)時(shí)jQuery對(duì)象的一個(gè)方法买鸽。
3户辞、解決window.onload函數(shù)的沖突
由于頁面的HMTL框架需要在頁面完全加載之后才能使用,因此在DOM編程時(shí)window.onload函數(shù)
頻繁被使用癞谒。倘若頁面中有多處都需要使用該函數(shù)底燎,或者其他.js文件中也包含window.onload函數(shù),
沖突問題十分棘手
jQuery中的ready()方法很好的解決了上述問題弹砚,它能夠自動(dòng)將其中的函數(shù)在頁面加載完成后運(yùn)行双仍,
并且同一個(gè)頁面中可以使用多個(gè)ready()方法,而且不互相沖突桌吃。例如
$(document).ready(function(){
$("table.datalist tr:nth-child(odd)").addClass("altrow");
});
對(duì)于上述代碼jQuery還提供了簡(jiǎn)寫朱沃,可以省略其中的"(document).ready"部分,代碼如下:
$(function(){
$("table.datalist tr:nth-child(odd)").addClass("altrow");
});
4、創(chuàng)建DOM元素
利用DOM方法創(chuàng)建元素節(jié)點(diǎn)逗物,通常需要將document.createElement()搬卒、document.create TextNode()、
appendChild()配合使用翎卓,十分麻煩契邀,而jQuery中使用"$"符號(hào)可以直接創(chuàng)建DOM元素。例如
var oNewP = $("<p>這是一個(gè)好故事</>")
以上代碼等同于javascript中的如下代碼:
var oNewP = document.createElement("p");// 新建節(jié)點(diǎn)
var oText = document.createTextNode("這是一個(gè)好故事");
oNewP.appendChild(oText);
另外失暴,jQuery還提供了DOM元素的insertAfter()方法坯门,偽代碼如下:
$(function(){ // ready函數(shù)
var oNewP = $("<p>這是一個(gè)好故事</>");// 創(chuàng)建DOM元素
oNewP.insertAfter("#myTarget");// insertAfter()方法
});
<body>
<p id="myTarget">插入到這行文字之后</p>
<p>也就是插入到這行文字之前,但這行沒有id,也可能不存在</p>
</body>
5.自定義添加"$"
jQuery不能滿足所有用戶的所有需求逗扒,且有一些特殊的需求十分小眾古戴,也不適合放到整個(gè)jQuery框架中,
用戶可以自定義該方法矩肩。代碼如下:
$.fn.disable = function(){
return this.each(function(){
if(typeof this.disabled != "undefined") this.disabled = true;
});
}
以上代碼首先設(shè)置".fn.disable",表明為""添加一個(gè)方法“disable()”,其中“$.fn”是擴(kuò)展jQuery時(shí)所必須的
然后利用匿名函數(shù)定義這個(gè)方法现恼,即用each()將調(diào)用這個(gè)方法的每個(gè)元素的disabled屬性均設(shè)置為true(如果該屬性存在)
6、解決"$"的沖突
如果其他框架也是用了“",會(huì)引起沖突黍檩,jQuery同樣提供了noConflict()方法來解決""沖突問題
jQuery.noConflict();
以上代碼可以使""按照其他javascript框架的方式運(yùn)算叉袍,這時(shí)再jQuery中便不能在使用“”,而必須使用jQuery建炫,
例如$("div p") 必須寫成jQuery("div p").