-
子選擇器 后代選擇器 相鄰兄弟選擇器 一般兄弟選擇器
查看全部 -
$(document).ready(function(){ })
等頁(yè)面的文檔(document)加載完畢后,再執(zhí)行后續(xù)的代碼,因?yàn)槲覀冊(cè)趫?zhí)行代碼的時(shí)候可能會(huì)依賴頁(yè)面的某一個(gè)元素,我們確保這個(gè)元素真正的被加載完后才能正確使用
查看全部 -
$( " #id ")
id選擇器 是唯一的。
查看全部 -
JavaScript DOM? 處理
var? p? = document.getElementById( ' imooc' );
p.innerHTML = '您好!通過(guò)慕課網(wǎng)學(xué)習(xí)jQuery才是最佳的途徑' ;
p.style,color = 'red';
jQuery 處理
var $p = $(' #imooc');
$p.html(" 您好!通過(guò)慕課網(wǎng)學(xué)習(xí)jQuery才是最佳的途徑").css('color ' , ' red ');
查看全部 -
$( document).ready("內(nèi)容 ")
? 會(huì)在頁(yè)面中打印的
查看全部 -
jQuery 庫(kù)
查看全部 -
- $(document).ready 的作用是等頁(yè)面的文檔(document)中的節(jié)點(diǎn)都加載完畢后,再執(zhí)行后續(xù)的代碼,因?yàn)槲覀冊(cè)趫?zhí)行代碼的時(shí)候,可能會(huì)依賴頁(yè)面的某一個(gè)元素,我們要確保這個(gè)元素真正的的被加載完畢后才能正確的使用。
查看全部 -
如果元素中占據(jù)文檔中一定的空間,元素被認(rèn)為是可見(jiàn)的。
可見(jiàn)元素的寬度或高度,是大于零。
元素的visibility: hidden 或 opacity: 0被認(rèn)為是可見(jiàn)的,因?yàn)樗麄內(nèi)匀徽加每臻g布局。查看全部 -
$( ".class" )
查看全部 -
$("#imooc")
查看全部 -
$( "#id" )
查看全部 -
jQuery的屬性與樣式之.attr()與.removeAttr()
每個(gè)元素都有一個(gè)或者多個(gè)特性,這些特性的用途就是給出相應(yīng)元素或者其內(nèi)容的附加信息。如:在img元素中,src就是元素的特性,用來(lái)標(biāo)記圖片的地址。
操作特性的DOM方法主要有3個(gè),getAttribute方法、setAttribute方法和removeAttribute方法,就算如此在實(shí)際操作中還是會(huì)存在很多問(wèn)題,這里先不說(shuō)。而在jQuery中用一個(gè)attr()與removeAttr()就可以全部搞定了,包括兼容問(wèn)題
jQuery中用attr()方法來(lái)獲取和設(shè)置元素屬性,attr是attribute(屬性)的縮寫(xiě),在jQuery DOM操作中會(huì)經(jīng)常用到attr()
attr()有4個(gè)表達(dá)式
attr(傳入屬性名):獲取屬性的值
attr(屬性名, 屬性值):設(shè)置屬性的值
attr(屬性名,函數(shù)值):設(shè)置屬性的函數(shù)值
attr(attributes):給指定元素設(shè)置多個(gè)屬性值,即:{屬性名一: “屬性值一” , 屬性名二: “屬性值二” , … … }
removeAttr()刪除方法
.removeAttr( attributeName ) : 為匹配的元素集合中的每個(gè)元素中移除一個(gè)屬性(attribute)
優(yōu)點(diǎn):
attr、removeAttr都是jQuery為了屬性操作封裝的,直接在一個(gè) jQuery 對(duì)象上調(diào)用該方法,很容易對(duì)屬性進(jìn)行操作,也不需要去特意的理解瀏覽器的屬性名不同的問(wèn)題
注意的問(wèn)題:
dom中有個(gè)概念的區(qū)分:Attribute和Property翻譯出來(lái)都是“屬性”,《js高級(jí)程序設(shè)計(jì)》書(shū)中翻譯為“特性”和“屬性”。簡(jiǎn)單理解,Attribute就是dom節(jié)點(diǎn)自帶的屬性
例如:html中常用的id、class、title、align等:
<div id="immooc" title="慕課網(wǎng)"></div>
而Property是這個(gè)DOM元素作為對(duì)象,其附加的內(nèi)容,例如,tagName, nodeName, nodeType,, defaultChecked, 和 defaultSelected 使用.prop()方法進(jìn)行取值或賦值等
獲取Attribute就需要用attr,獲取Property就需要用prop
查看全部 -
jQuery選擇器之特殊選擇器this
相信很多剛接觸jQuery的人,很多都會(huì)對(duì)$(this)和this的區(qū)別模糊不清,那么這兩者有什么區(qū)別呢?
this是JavaScript中的關(guān)鍵字,指的是當(dāng)前的上下文對(duì)象,簡(jiǎn)單的說(shuō)就是方法/屬性的所有者
下面例子中,imooc是一個(gè)對(duì)象,擁有name屬性與getName方法,在getName中this指向了所屬的對(duì)象imooc
var imooc = { ? ? name:"慕課網(wǎng)", ? ? getName:function(){ ? ? ? ? //this,就是imooc對(duì)象 ? ? ? ? return this.name; ? ? } } imooc.getName(); //慕課網(wǎng)
當(dāng)然在JavaScript中this是動(dòng)態(tài)的,也就是說(shuō)這個(gè)上下文對(duì)象都是可以被動(dòng)態(tài)改變的(可以通過(guò)call,apply等方法),具體的大家可以查閱相關(guān)資料
同樣的在DOM中this就是指向了這個(gè)html元素對(duì)象,因?yàn)閠his就是DOM元素本身的一個(gè)引用
假如給頁(yè)面一個(gè)P元素綁定一個(gè)事件:
p.addEventListener('click',function(){ ? ? //this === p ? ? //以下兩者的修改都是等價(jià)的 ? ? this.style.color = "red"; ? ? p.style.color = "red"; },false);
通過(guò)addEventListener綁定的事件回調(diào)中,this指向的是當(dāng)前的dom對(duì)象,所以再次修改這樣對(duì)象的樣式,只需要通過(guò)this獲取到引用即可
this.style.color = "red"
但是這樣的操作其實(shí)還是很不方便的,這里面就要涉及一大堆的樣式兼容,如果通過(guò)jQuery處理就會(huì)簡(jiǎn)單多了,我們只需要把this加工成jQuery對(duì)象
換成jQuery的做法:
$('p').click(function(){ ? ? //把p元素轉(zhuǎn)化成jQuery的對(duì)象 ? ? var $this= $(this) ? ? ?$this.css('color','red') })
通過(guò)把$()方法傳入當(dāng)前的元素對(duì)象的引用this,把這個(gè)this加工成jQuery對(duì)象,我們就可以用jQuery提供的快捷方法直接處理樣式了
總體:
this,表示當(dāng)前的上下文對(duì)象是一個(gè)html對(duì)象,可以調(diào)用html對(duì)象所擁有的屬性和方法。 $(this),代表的上下文對(duì)象是一個(gè)jquery的上下文對(duì)象,可以調(diào)用jQuery的方法和屬性值。
查看全部 -
jQuery對(duì)象轉(zhuǎn)化成DOM對(duì)象
? ? jQuery庫(kù)本質(zhì)上還是JavaScript代碼,它只是對(duì)JavaScript語(yǔ)言進(jìn)行包裝處理,為的是提供更好更方便快捷的DOM處理與開(kāi)發(fā)中經(jīng)常使用的功能。我們使用jQuery的同時(shí)也能混合JavaScript原生代碼一起使用。在很多場(chǎng)景中,我們需要jQuery與DOM能夠相互的轉(zhuǎn)換,它們都是可以操作的DOM元素,jQuery是一個(gè)類數(shù)組對(duì)象,而DOM對(duì)象就是一個(gè)單獨(dú)的DOM元素。
如何把jQuery對(duì)象轉(zhuǎn)成DOM對(duì)象?
利用數(shù)組下標(biāo)的方式讀取到j(luò)Query中的DOM對(duì)象
HTML代碼
<div>元素一</div> <div>元素二</div> <div>元素三</div>
JavaScript代碼
var $div = $('div') //jQuery對(duì)象 var div = $div[0] //轉(zhuǎn)化成DOM對(duì)象 div.style.color = 'red' //操作dom對(duì)象的屬性
用jQuery找到所有的div元素(3個(gè)),因?yàn)閖Query對(duì)象也是一個(gè)數(shù)組結(jié)構(gòu),可以通過(guò)數(shù)組下標(biāo)索引找到第一個(gè)div元素,通過(guò)返回的div對(duì)象,調(diào)用它的style屬性修改第一個(gè)div元素的顏色。這里需要注意的一點(diǎn)是,數(shù)組的索引是從0開(kāi)始的,也就是第一個(gè)元素下標(biāo)是0
通過(guò)jQuery自帶的get()方法
jQuery對(duì)象自身提供一個(gè).get() 方法允許我們直接訪問(wèn)jQuery對(duì)象中相關(guān)的DOM節(jié)點(diǎn),get方法中提供一個(gè)元素的索引:
var $div = $('div') //jQuery對(duì)象 var div = $div.get(0) //通過(guò)get方法,轉(zhuǎn)化成DOM對(duì)象 div.style.color = 'red' //操作dom對(duì)象的屬性
其實(shí)我們翻開(kāi)源碼,看看就知道了,get方法就是利用的第一種方式處理的,只是包裝成一個(gè)get讓開(kāi)發(fā)者更直接方便的使用。
查看全部 -
DOM對(duì)象轉(zhuǎn)化成jQuery對(duì)象
相比較jQuery轉(zhuǎn)化成DOM,開(kāi)發(fā)中更多的情況是把一個(gè)dom對(duì)象加工成jQuery對(duì)象。$(參數(shù))是一個(gè)多功能的方法,通過(guò)傳遞不同的參數(shù)而產(chǎn)生不同的作用。
如果傳遞給$(DOM)函數(shù)的參數(shù)是一個(gè)DOM對(duì)象,jQuery方法會(huì)把這個(gè)DOM對(duì)象給包裝成一個(gè)新的jQuery對(duì)象
通過(guò)$(dom)方法將普通的dom對(duì)象加工成jQuery對(duì)象之后,我們就可以調(diào)用jQuery的方法了
HTML代碼
<div>元素一</div> <div>元素二</div> <div>元素三</div>
JavaScript代碼
var div = document.getElementsByTagName('div'); //dom對(duì)象 var $div = $(div); //jQuery對(duì)象 var $first = $div.first(); //找到第一個(gè)div元素 $first.css('color', 'red'); //給第一個(gè)元素設(shè)置顏色
通過(guò)getElementsByTagName獲取到所有div節(jié)點(diǎn)的元素,結(jié)果是一個(gè)dom合集對(duì)象,不過(guò)這個(gè)對(duì)象是一個(gè)數(shù)組合集(3個(gè)div元素)。通過(guò)$(div)方法轉(zhuǎn)化成jQuery對(duì)象,通過(guò)調(diào)用jQuery對(duì)象中的first與css方法查找第一個(gè)元素并且改變其顏色。
查看全部 -
表單中type=hidden元素,是不可見(jiàn)的隱藏元素,用:hidden選擇器
查看全部 -
jQuery選擇器之表單對(duì)象屬性篩選選擇器
除了表單元素選擇器外,表單對(duì)象屬性篩選選擇器也是專門(mén)針對(duì)表單元素的選擇器,可以附加在其他選擇器的后面,主要功能是對(duì)所選擇的表單元素進(jìn)行篩選
表單篩選選擇器的描述:
注意事項(xiàng):
選擇器適用于復(fù)選框和單選框,對(duì)于下拉框元素, 使用 :selected 選擇器
在某些瀏覽器中,選擇器:checked可能會(huì)錯(cuò)誤選取到<option>元素,所以保險(xiǎn)起見(jiàn)換用選擇器input:checked,確保只會(huì)選取<input>元素
查看全部 -
jQuery選擇器之表單元素選擇器
無(wú)論是提交還是傳遞數(shù)據(jù),表單元素在動(dòng)態(tài)交互頁(yè)面的作用是非常重要的。jQuery中專門(mén)加入了表單選擇器,從而能夠極其方便地獲取到某個(gè)類型的表單元素
表單選擇器的具體方法描述:
注意事項(xiàng):
除了input篩選選擇器,幾乎每個(gè)表單類別篩選器都對(duì)應(yīng)一個(gè)input元素的type值。大部分表單類別篩選器可以使用屬性篩選器替換。比如 $(':password') == $('[type=password]')
查看全部 -
jQuery選擇器之子元素篩選選擇器
子元素篩選選擇器不常使用,其篩選規(guī)則比起其它的選擇器稍微要復(fù)雜點(diǎn)
子元素篩選選擇器描述表:
注意事項(xiàng):
:first只匹配一個(gè)單獨(dú)的元素,但是:first-child選擇器可以匹配多個(gè):即為每個(gè)父級(jí)元素匹配第一個(gè)子元素。這相當(dāng)于:nth-child(1)
:last 只匹配一個(gè)單獨(dú)的元素, :last-child 選擇器可以匹配多個(gè)元素:即,為每個(gè)父級(jí)元素匹配最后一個(gè)子元素
如果子元素只有一個(gè)的話,:first-child與:last-child是同一個(gè)
?:only-child匹配某個(gè)元素是父元素中唯一的子元素,就是說(shuō)當(dāng)前子元素是父元素中唯一的元素,則匹配
jQuery實(shí)現(xiàn):nth-child(n)是嚴(yán)格來(lái)自CSS規(guī)范,所以n值是“索引”,也就是說(shuō),從1開(kāi)始計(jì)數(shù),:nth-child(index)從1開(kāi)始的,而eq(index)是從0開(kāi)始的
nth-child(n) 與 :nth-last-child(n) 的區(qū)別前者是從前往后計(jì)算,后者從后往前計(jì)算
查看全部 -
jQuery選擇器之屬性篩選選擇器
屬性選擇器讓你可以基于屬性來(lái)定位一個(gè)元素??梢灾恢付ㄔ撛氐哪硞€(gè)屬性,這樣所有使用該屬性而不管它的值,這個(gè)元素都將被定位,也可以更加明確并定位在這些屬性上使用特定值的元素,這就是屬性選擇器展示它們的威力的地方。
描述如下:
瀏覽器支持:
[att=val]、[att]、[att|=val]、[att~=val]? 屬于CSS 2.1規(guī)范
[ns|attr]、[att^=val]、[att*=val]、[att$=val] 屬于CSS3規(guī)范
[name!="value"]? 屬于jQuery 擴(kuò)展的選擇器
CSS選擇器無(wú)論CSS2.1版本還是CSS3版本,IE7和IE8都支持,webkit、Gecko核心及Opera也都支持,只有IE6以下瀏覽器才不支持
在這么多屬性選擇器中[attr="value"]和[attr*="value"]是最實(shí)用的
[attr="value"]能幫我們定位不同類型的元素,特別是表單form元素的操作,比如說(shuō)input[type="text"],input[type="checkbox"]等 [attr*="value"]能在網(wǎng)站中幫助我們匹配不同類型的文件
查看全部 -
jQuery選擇器之內(nèi)容篩選選擇器
基本篩選選擇器針對(duì)的都是元素DOM節(jié)點(diǎn),如果我們要通過(guò)內(nèi)容來(lái)過(guò)濾,jQuery也提供了一組內(nèi)容篩選選擇器,當(dāng)然其規(guī)則也會(huì)體現(xiàn)在它所包含的子元素或者文本內(nèi)容上
內(nèi)容過(guò)濾器描述如下表:
注意事項(xiàng):
:contains與:has都有查找的意思,但是contains查找包含“指定文本”的元素,has查找包含“指定元素”的元素
如果:contains匹配的文本包含在元素的子元素中,同樣認(rèn)為是符合條件的。
:parent與:empty是相反的,兩者所涉及的子元素,包括文本節(jié)點(diǎn)
查看全部 -
很多時(shí)候我們不能直接通過(guò)基本選擇器與層級(jí)選擇器找到我們想要的元素,為此jQuery提供了一系列的篩選選擇器用來(lái)更快捷的找到所需的DOM元素。篩選選擇器很多都不是CSS的規(guī)范,而是jQuery自己為了開(kāi)發(fā)者的便利延展出來(lái)的選擇器
篩選選擇器的用法與CSS中的偽元素相似,選擇器用冒號(hào)“:”開(kāi)頭,通過(guò)一個(gè)列表,看看基本篩選器的描述:
注意事項(xiàng):
:eq(), :lt(), :gt(), :even, :odd 用來(lái)篩選他們前面的匹配表達(dá)式的集合元素,根據(jù)之前匹配的元素在進(jìn)一步篩選,注意jQuery合集都是從0開(kāi)始索引
gt是一個(gè)段落篩選,從指定索引的下一個(gè)開(kāi)始,gt(1) 實(shí)際從2開(kāi)始
查看全部 -
頁(yè)面的任何操作都需要節(jié)點(diǎn)的支撐,開(kāi)發(fā)者如何快速高效的找到指定的節(jié)點(diǎn)也是前端開(kāi)發(fā)中的一個(gè)重點(diǎn)。jQuery提供了一系列的選擇器幫助開(kāi)發(fā)者達(dá)到這一目的,讓開(kāi)發(fā)者可以更少的處理復(fù)雜選擇過(guò)程與性能優(yōu)化,更多專注業(yè)務(wù)邏輯的編寫(xiě)。
jQuery幾乎支持主流的css1~css3選擇器的寫(xiě)法,我們從最簡(jiǎn)單的也是最常用的開(kāi)始學(xué)起
id選擇器:一個(gè)用來(lái)查找的ID,即元素的id屬性
$( "#id" )
id選擇器也是基本的選擇器,jQuery內(nèi)部使用JavaScript函數(shù)document.getElementById()來(lái)處理ID的獲取。原生語(yǔ)法的支持總是非常高效的,所以在操作DOM的獲取上,如果能采用id的話盡然考慮用這個(gè)選擇器
值得注意:
id是唯一的,每個(gè)id值在一個(gè)頁(yè)面中只能使用一次。如果多個(gè)元素分配了相同的id,將只匹配該id選擇集合的第一個(gè)DOM元素。但這種行為不應(yīng)該發(fā)生;有超過(guò)一個(gè)元素的頁(yè)面使用相同的id是無(wú)效的
查看全部 -
通過(guò)一個(gè)列表,對(duì)比層級(jí)選擇器的區(qū)別
?仔細(xì)觀察層級(jí)選擇器之間還是有很多相似與不同點(diǎn)
層級(jí)選擇器都有一個(gè)參考節(jié)點(diǎn)
后代選擇器包含子選擇器的選擇的內(nèi)容
一般兄弟選擇器包含相鄰兄弟選擇的內(nèi)容
相鄰兄弟選擇器和一般兄弟選擇器所選擇到的元素,必須在同一個(gè)父元素下
查看全部 -
拋開(kāi)jQuery,如果要獲取文檔中所有的元素,通過(guò)document.getElementsByTagName()中傳遞"*"同樣可以獲取到
不難發(fā)現(xiàn),id、class、tag都可以通過(guò)原生的方法獲取到對(duì)應(yīng)的節(jié)點(diǎn),但是我們還需要考慮一個(gè)兼容性的問(wèn)題,我這里順便提及一下,比如:
IE會(huì)將注釋節(jié)點(diǎn)實(shí)現(xiàn)為元素,所以在IE中調(diào)用getElementsByTagName里面會(huì)包含注釋節(jié)點(diǎn),這個(gè)通常是不應(yīng)該的
getElementById的參數(shù)在IE8及較低的版本不區(qū)分大小寫(xiě)
IE7及較低的版本中,表單元素中,如果表單A的name屬性名用了另一個(gè)元素B的ID名并且A在B之前,那么getElementById會(huì)選中A
IE8及較低的版本,瀏覽器不支持getElementsByClassName
看到了吧,作為一名合格的前端不是那么簡(jiǎn)單的,就一個(gè)基本的選擇器上面都需要做這么多兼容,幸好有jQuery的出現(xiàn),讓我們省了很多功夫,如果大家對(duì)jQuery的實(shí)現(xiàn)感興趣,可以看我另一個(gè)門(mén)課程?《jQuery源碼解析》
查看全部 -
.html(),.text()和.val()的差異總結(jié):?
.html(),.text(),.val()三種方法都是用來(lái)讀取選定元素的內(nèi)容;只不過(guò).html()是用來(lái)讀取元素的html內(nèi)容(包括html標(biāo)簽),.text()用來(lái)讀取元素的純文本內(nèi)容,包括其后代元素,.val()是用來(lái)讀取表單元素的"value"值。其中.html()和.text()方法不能使用在表單元素上,而.val()只能使用在表單元素上;另外.html()方法使用在多個(gè)元素上時(shí),只讀取第一個(gè)元素;.val()方法和.html()相同,如果其應(yīng)用在多個(gè)元素上時(shí),只能讀取第一個(gè)表單元素的"value"值,但是.text()和他們不一樣,如果.text()應(yīng)用在多個(gè)元素上時(shí),將會(huì)讀取所有選中元素的文本內(nèi)容。
.html(htmlString),.text(textString)和.val(value)三種方法都是用來(lái)替換選中元素的內(nèi)容,如果三個(gè)方法同時(shí)運(yùn)用在多個(gè)元素上時(shí),那么將會(huì)替換所有選中元素的內(nèi)容。
.html(),.text(),.val()都可以使用回調(diào)函數(shù)的返回值來(lái)動(dòng)態(tài)的改變多個(gè)元素的內(nèi)容。查看全部 -
attr()有4個(gè)表達(dá)式
attr(傳入屬性名):獲取屬性的值
attr(屬性名, 屬性值):設(shè)置屬性的值
attr(屬性名,函數(shù)值):設(shè)置屬性的函數(shù)值
attr(attributes):給指定元素設(shè)置多個(gè)屬性值,即:{屬性名一: “屬性值一” , 屬性名二: “屬性值二” , … … }
removeAttr()刪除方法
.removeAttr( attributeName ) : 為匹配的元素集合中的每個(gè)元素中移除一個(gè)屬性(attribute)查看全部
舉報(bào)