js中window onload事件只能出現一次,若是出現屢次,後面的事件會覆蓋掉前面的事件css
js代碼容錯差html
簡單的動畫效果實現很繁瑣,例如簡單的動畫漸變效果jquery
jQuery的兩大特色編程
鏈式編程:好比 .show() 和. html()能夠連寫爲.show().html().數組
隱式迭代 : 隱式對應的是顯式,隱式迭代的意思是: 在方法的內部循環遍歷,而不用咱們本身再進行循環,簡化咱們的操做,方便咱們調用app
Jquery是js的一個庫,封裝了咱們開發過程當中經常使用的一些功能,方便咱們調用,提升開發效率dom
js庫是把咱們經常使用的複雜功能封裝到簡單的方法中,咱們用的時候,將庫直接引入而後調用方法便可函數
使用步驟動畫
導入包的代碼必定要放在js代碼的最上面this
原生的js'的入口函數指的是:window.onload = function() {}
jQuery的入口函數,有如下幾個寫法
寫法一: 文檔加載完畢,圖片不加字啊的時候,能夠執行這個函數
$(document).ready(function () {
alert(1);
})
寫法二: 寫法一的簡潔版
$(function () {
alert(1);
});
寫法三: 文檔加載完畢,圖片也加載完畢的時候,在執行這個函數
$(window).ready(function () {
alert(1);
})
jQuery入口函數與js入口函數的區別
書寫個數不一樣:
js的入口函數只能出現一次,出現屢次會存在事件覆蓋效果
jQuery的入口函數<能夠出現任意屢次,並不存在事件覆蓋效果
執行時機不一樣
js的入口函數是在全部的文件資源加載完成後,才執行,這些文件資源包括:頁面文檔,外部的js文件,外部的css文件,圖片等
jQuery的入口函數,是在文檔加載完成後,再執行,文檔加載完成指的是:DOM樹加載完成後,就能夠操做DOM了,不用等到全部額外部資源都加載完畢
jQuery使用$的緣由:書寫簡潔,相對於其餘字符不同凡響,容易被記住,
Jquery佔用了咱們兩個變量: $和JQuery.在代碼中這兩個變量都是同樣的
兩者的區別
經過Jquery獲取的元素是一個jq對象數組,其中包含着原生js中的DOM對象,
對於這樣一個div結構
<div></div>
<div id="app"></div>
<div class="box"></div>
<div class="box"></div>
<div></div>
js獲取元素節點方式
var myBox = document.getElementById("app"); //經過 id 獲取單個元素
var boxArr = document.getElementsByClassName("box"); //經過 class 獲取的是僞數組
var divArr = document.getElementsByTagName("div"); //經過標籤獲取的是僞數組
jQuery獲取這些元素節點的方式:(獲取的都是數組)
//獲取的是數組,裏面包含着原生 JS 中的DOM對象。
console.log($('#app'));
console.log($('.box'));
console.log($('div'));
總結:jQuery就是把DOM對象從新包裝一下,讓其具備jQuery方法\
兩者的相互轉換
DOM對象轉換爲jQuery對象
$(js對象);
jQuery對象轉爲DOM對象
jquery對象[index]; //方式1(推薦)
jquery對象.get(index); //方式2
jquery對象轉換成了DOM對象以後,能夠直接調用DOM提供的一些功能,如\
$('div')[1].style.backgroundColor = 'yellow';
$('div')[3].style.backgroundColor = 'green';
分爲基本選擇器,層級選擇器,屬性選擇器
基本選擇器
$("#id") //id選擇器
$("tagName") //標籤選擇器
$(".className") //class選擇器
$("*") //通用選擇器
$("div.c1") // 交集選擇器 找到有含有c1類的div標籤
$("#id, .className, tagName") //並集選擇器
層級選擇器
$("x y");// x的全部後代y(子子孫孫)
$("x > y");// x的全部兒子y(兒子)
$("x + y")// 找到全部緊挨在x後面的y
$("x ~ y")// x以後全部的兄弟y
屬性選擇器
$('[href]') //找全部含href屬性的標籤
$('a[href]') //找全部含href屬性的a標籤
$('a[title="luffy"]') //找全部title屬性是luffy的a標籤
$('a[title="baidu"]') //找全部title屬性不是百度的a標籤
$('a[href^="https"]') //找全部href屬性以https開頭的a標籤
$('a[href$="html"]') //找全部href屬性以html結尾的a標籤
$('a[href*="i"]') //找全部href屬性中含有i的a標籤
$('a[href][title="luffy"]') //找全部含有href屬性且title屬性=luffy的a標籤
基本篩選器
:first // 第一個
:last // 最後一個
:eq(index)// 索引等於index的那個元素
:even // 匹配全部索引值爲偶數的元素,從 0 開始計數
:odd // 匹配全部索引值爲奇數的元素,從 0 開始計數
:gt(index)// 匹配全部大於給定索引值的元素
:lt(index)// 匹配全部小於給定索引值的元素
:not(元素選擇器)// 移除全部知足not條件的標籤
:has(元素選擇器)// 根據含有某個後代篩選
表單篩選器
type篩選器
:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
其餘屬性篩選器
:enabled
:disabled
:checked
:selected
//找兄弟
$("#id").siblings();// 兄弟們,不包含本身,.siblings('#id'),能夠在添加選擇器進行進一步篩選
//找弟弟
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2") #直到找到id爲i2的標籤就結束查找,不包含它
//找哥哥
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")
//找祖輩
$("#id").parent()
$("#id").parents() // 查找當前元素的全部的父輩元素(爺爺輩、祖先輩都找到)
$("#id").parentsUntil('body') // 查找當前元素的全部的父輩元素,直到遇到匹配的那個元素爲止,這裏直到body標籤,不包含body標籤,基本選擇器均可以放到這裏面使用。
//找兒子
$("#id").children();// 兒子們
//過濾
$("div").first() // 獲取匹配的第一個元素
$("div").last() // 獲取匹配的最後一個元素
$("div").eq(n) // 索引值等於指定值的元素,n是索引
$("div").not() // 從匹配元素的集合中刪除與指定表達式匹配的元素
$("div").find("p") //後代選擇器,在全部div標籤中找後代的p標籤
$("div").filter(".c1") // 交集選擇器,從結果集中過濾出有c1樣式類的
$("div").has() // 保留包含特定後代的元素,去掉那些不含有指定後代的元素。
爲button按鈕綁定單擊事件,單機按鈕彈出警告框
$('button').click(
function () {
alert('wahaha')
}
)
標籤內文本操做
html標籤元素中全部的內容
爲button按鈕綁定單擊事件,單機按鈕彈出警告框
$('button').click(
function () {
alert('wahaha')
}
)
text標籤元素的文本內容
//獲取值:獲取選中標籤元素中的文本內容
$('#box').text();
//設置值:設置該全部的文本內容
$('#box').text('<a href="https://www.baidu.com">百度一下</a>');
文檔標籤操做
插入標籤
append和appendTo
//追加某元素,在父元素中添加新的子元素。子元素能夠爲:stirng | element(js對象) | jquery元素
父元素.append(子元素)
//追加到某元素,子元素添加到父元素
子元素.appendTo(父元素)
//append
var oli = document.createElement('li');
oli.innerHTML = '哈哈哈';
$('ul').append('<li>1233</li>');
$('ul').append(oli);
$('ul').append($('#app'));
//appendTo
$('<li>天王蓋地虎</li>').appendTo($('ul')).addClass('active')
注意:若是追加的jQuery對本來在文檔樹中,那麼這些元素將從原位置上消失,簡言之就是移動操做
prepend和prependTo
// 前置添加, 添加到父元素的第一個位置
父元素.prepend(子元素);
// 前置添加, 添加到父元素的第一個位置
子元素.prependTo(父元素);
after和insertAfter
// 在匹配的元素以後插入內容
兄弟元素.after(要插入的兄弟元素);
要插入的兄弟元素.inserAfter(兄弟元素);
$('ul').after('<h4>我是一個h3標題</h4>')
$('<h5>我是一個h2標題</h5>').insertAfter('ul')
before和onsertBefore
// 在匹配的元素以前插入內容
兄弟元素.before(要插入的兄弟元素);
要插入的兄弟元素.inserBefore(兄弟元素);
//示例
$('ul').before('<h3>我是一個h3標題</h3>')
$('<h2>我是一個h2標題</h2>').insertBefore('ul')
刪除標籤
//刪除節點後,事件也會刪除(簡言之,刪除了整個標籤)
$(selector).remove();
// 刪除節點後,事件會保留
$(selector).detach();
// 清空選中元素中的全部後代節點
$(selector).empty();
修改標籤
// selector被替換:將全部匹配的元素替換成指定的string、js對象、jquery對象。
$(selector).replaceWith(content);
// selector被替換:將全部的匹配的元素替換成p標籤。
$('<p>哈哈哈</p>')replaceAll(selector);
// replaceWith
$('h5').replaceWith('<a href="#">hello world</a>') //將全部的h5標題替換爲a標籤
$('h5').replaceWith($('#app')); //將全部h5標題標籤替換成id爲app的dom元素
// replaceAll
$('<br/><hr/><button>按鈕</button>').replaceAll('h4')
克隆標籤
$('button').click(function() {
// 1.clone():克隆匹配的DOM元素
// 2.clone(true):元素以及其全部的事件處理而且選中這些克隆的副本(簡言之,副本具備與真身同樣的事件處理能力)
$(this).clone(true).insertAfter(this);
})
屬性操做
atter()設置屬性值或者獲取值
//獲取值:attr()設置一個屬性值的時候 只是獲取值
$('div').attr('id')
$('div').attr('class')
//設置值
$('div').attr('class','box') //設置一個值
$('div').attr({name:'hahaha',class:'happy'}) //設置多個值
removeAttr()移除屬性
//刪除單個屬性
$('#box').removeAttr('name');
$('#box').removeAttr('class');
//刪除多個屬性
$('#box').removeAttr('name class');
prop()
// 查看屬性
$(selector).prop(property)
// 設置屬性
$(selector).prop(property,value)
// 設置多個屬性
$(selector).prop({property:value, property:value,...})
class類屬性
addClass添加類名
// 爲每一個匹配的元素添加指定的類名。
$('div').addClass("box");//追加一個
$('div').addClass("box box2");//追加多個
removeClass移除類名
// 從全部匹配的元素中刪除所有或者指定的類。
$('div').removeClass('box');//移除box類
$('div').removeClass();//移除所有的類
toggleClass類的切換
// 若是存在(不存在)就刪除(添加)一個類。
$('div').toggleClass('box')
$('span').click(function(){
//動態的切換class類名爲active
$(this).toggleClass('active')
})
val表單控制Value屬性
// 獲取值:用於表單控件中獲取值,好比input textarea select等等
$(selector).val()
// 設置值:
$('input').val('設置了表單控件中的值');
css樣式
// css(直接修改css的屬性來修改樣式)
$("div").css('color'); //獲取
$("p").css("color", "red"); //設置
$("p").css({"color":"red","background-color":"yello"}); // 設置多個
盒子樣式屬性
內容:寬度(width)和高度(height)
內容+padding:寬度(innerWidth) 高度(innerHeight)
內容+padding+border:寬度(outerWidth) 高度(outerHeight)
// 外部寬
.outerWidth() //獲取第一個匹配元素 :內容+padding+border的寬
.outerWidth(true) //獲取第一個匹配元素:內容+padding+border+margin的寬
.outerWidth(value) //設置多個,調整的是「內容」的寬
//外部高
.outerHeight() //第一個匹配元素:獲取內容+padding+border的高
.outerHeight(true) //第一個匹配元素:獲取內容+padding+border+margin的高
.outerHeight( value ) //設置多個,調整的是「內容」的高
滾動條距離屬性
// 水平方向
.scrollLeft() //獲取
.scrollLeft( value )//設置
// 垂直方向
.scrollTop() //獲取
.scrollTop( value ) //設置