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