1.說說庫和框架的區(qū)別脂凶?
庫主要是封裝了某些函數(shù)的集合宪睹。框架也是蚕钦。
使用庫是指亭病,你的代碼決定什么時候從庫中調用一個特定的方法;使用框架則是嘶居,你實現(xiàn)了一些回調方法罪帖,到了特定的時候框架會去調用這些方法。
當你在調用庫的時候, 你按照自己的意愿來操作它(比如jQuery)整袁。
而菠齿,對于框架, 那么操作就是倒轉過來了坐昙,是它在調用你(比如bootstrap)绳匀。
常見的庫:jQuery等
常見的框架:AngularJS,Bootstrapc,React等炸客。
2.jquery 能做什么襟士?
一、取得頁面中的元素嚷量。
如果不使用JavaScript庫,遍歷DOM樹逆趣,以及查找HTML文檔結構中某個特殊的部分蝶溶,必需編寫很多代碼。jQuery為準確獲取需要操縱的文檔元素宣渗,提供了可靠而富有效率的選擇符機制抖所。
二、修改頁面的外觀痕囱。
CSS雖然為呈現(xiàn)方式提供了一種強大的手段田轧,但當所有瀏覽器不完全支持相同的標準時,單純使用CSS就會顯得力不從心鞍恢。jQuery可以彌補這一不足傻粘,它提供了跨瀏覽器的標準來解決方案。而且即使在頁面已經呈現(xiàn)之后帮掉,jQuery仍然能夠改變文檔中某個部分的類或都個別的樣式屬性弦悉。
三、改變頁面的內容蟆炊。
jQuery能夠影響的范圍并不局限于簡單的外觀變化稽莉,使用少量的代碼,jQuery就能改變文檔的內容涩搓,可以改變文本污秆、插入或都翻轉圖像、對列表重新排序昧甘,甚至對HTML文檔的整個結構都能重寫和擴充——所有這些只需要一個簡單易用的API良拼。
四、響應用戶的頁面操作疾层。
即使是最強大和最精心的設計的行為将饺,如果我們無法控制它何時發(fā)生,那它也毫無用處。jQuery提供了截取形形色色的頁面事件(比如用戶單擊一個鏈接)的適當方式予弧,而不需要使用事件處理程序搞亂HTML代碼刮吧。此外,它的事件處理API也消除了經常困擾Web開發(fā)人員的瀏覽器不一致性掖蛤。
五杀捻、為頁面添加動態(tài)效果。
為了實現(xiàn)某種交互式行為蚓庭,設計者也必須向用戶提供視覺上的反饋致讥。jQuery中內置的一批淡入、擦除之類的效果器赞,以及制作新效果的工具包垢袱,為此提供了便利。
六港柜、無需刷新頁面请契。
即可從服務器獲取信息,這種編程模式就是從所周知的AJAX(Asyynchoronous JavaScript and XML)夏醉,它能輔助Web開發(fā)人員創(chuàng)建出反應靈敏爽锥、功能豐富的網站。jQuery通過消除這一過程中的瀏覽器特定的復雜性畔柔,使開發(fā)人員得以專注于服務器端的功能設計氯夷。
七、簡化常見的JavaScript任務靶擦。
除了這些完全針對文檔的特性之外腮考,jQuery也提供了對基本的JavaScript結構(例如迭代和數(shù)組操作等)的增強。
3.jquery 對象和 DOM 原生對象有什么區(qū)別玄捕?如何轉化秸仙?
jquery對象是偽數(shù)組,DOM原生對象如果只有一個桩盲,表示出來就不是偽數(shù)組寂纪。
jQuery對象轉化成DOM原生對象,提取數(shù)組中的單個元素:[xx](n)
赌结。
DOM原生對象轉化為jQuery對象捞蛋,加上$()
。
舉例:
<!DOCTYPE html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<h1>標題</h1>
<p>段落0</p>
<p>段落1</p>
<ul>
<li class="list">0</li>
<li class="list">1</li>
<li class="list">2</li>
</ul>
</body>
</html>
可以看到柬姚,jQuery對象是一個偽數(shù)組
就算只有一個元素拟杉,也是個偽數(shù)組。數(shù)組加上序號可以提取到具體DOM元素量承。
DOM對象加上
$()
得到偽數(shù)組搬设。
4.jquery中如何綁定事件穴店?bind、unbind拿穴、delegate泣洞、live、on默色、off都有什么作用球凰?推薦使用哪種?使用on綁定事件使用事件代理的寫法腿宰?
類似于原生JavaScript呕诉,用xx.xxx('xxxx',function(){})
來綁定事件。其中吃度,xxx
方法有很多種甩挫,例如bind、unbind椿每、delegate捶闸、live、on拖刃、off等。
1..bind()
.bind()
只能對已有的元素綁定事件贪绘。是從1.0版開始就已經提供了的兑牡,這是對事件綁定提供一個統(tǒng)一的接口。
寫法:
.bind( eventType [, eventData ], handler(eventObject) )
eventType一個包含一個或多個DOM事件類型的字符串税灌,比如"click"或"submit,"或自定義事件的名稱均函。
eventData一個對象,它包含的數(shù)據(jù)鍵值對映射將被傳遞給事件處理程序菱涤。
handler(eventObject)當事件觸發(fā)時執(zhí)行的函數(shù)苞也。
舉例:
<!DOCTYPE html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
<meta charset="utf-8">
<title>哈哈</title>
</head>
<body>
<div>
<h1>事件綁定</h1>
<p>
<span>這是一個鏈接</span>
<a href="#">點我</a>
</p>
<h2>下面是一個表格</h2>
<form>
<input type='text' name='sex'>
<input type="submit" name='submit'>
</form>
<script>
$('a').bind('click', function() { alert("That tickles!") });
$('h2').append('<a href="#">再點一次</a>');
</script>
</div>
</body>
</html>
效果
點擊第一個鏈接彈出That tickels!,點擊第二個鏈接沒反應粘秆。
2.unbind()
unbind()
從元素上移除一個之前附加的事件處理器如迟。
寫法:
.unbind( [eventType ] [, handler(eventObject) ] )
上例中可以把js部分改成:
<script>
$('a').bind('click', function() { alert("That tickles!") });
$('a').bind('mouseenter', function() { console.log("That tickles!") });
$('a').unbind('click');
</script>
.unbind()
阻止了鼠標的點擊事件。點擊第一個鏈接沒有反應攻走,鼠標滑過跳出That tickels!殷勘。
3..delegate()
.delegate()
用于為指定元素的一個或多個事件綁定事件處理函數(shù)。即使是執(zhí)行.delegate()
之后新添加的元素昔搂,只要它符合條件玲销,綁定的事件處理函數(shù)仍然對其有效。.delegate()
從1.4.2版本開始使用摘符。寫法:
.delegate( selector, eventType, handler(eventObject) )
把1中的js代碼改為:
<script>
$('p').delegate('a','click', function() {
$(this).after('<br/><a href="#">Another paragraph!</a>')
});
</script>
結果
點擊第一個鏈接時贤斜,頁面顯示鏈接又一個鏈接策吠。點擊又一個鏈接,還會出現(xiàn)又一個鏈接瘩绒。.delegate()
之后新添加的元素猴抹,只要它符合條件,綁定的事件處理函數(shù)仍然對其有效草讶。
4..live()
.live()
不僅能對能對已有的元素綁定事件洽糟,還能對未來插入的元素綁定事件。但是在1.7版本被.on()
取代堕战,在1.9版本被廢棄了坤溃,以后的版本就不能使用了。
我們上面舉的例子中用到的是1.7版本嘱丢,.live()
還可以使用薪介。
寫法:
.live( events, handler(eventObject) )
將上面的js部分改為:
<script>
$('a').live('click', function() { console.log("That tickles!") });
</script>
結果,點擊兩個鏈接控制臺都That tickles輸出越驻。
5..on()
.on()
是1.7版本以后增加的方法汁政。這以后.bind()
,.delegate()
幾種方法都可以用.on()
代替缀旁。寫法:
.on( events [, selector ] [, data ], handler )
主要區(qū)別是:
// jQuery 1.4.3+
$( elements ).delegate( selector, events, data, handler );
// jQuery 1.7+
$( elements ).on( events, selector, data, handler );
把.delegate()
中的js代碼改為:
<script>
$('p').on('click','a', function() {
$(this).after('<br/><a href="#">又一個鏈接 </a>')
});
</script>
效果
和.delegate()
相同记劈。
6..off()
.off()
是移除一個事件處理程序。和.on()
對應并巍。
寫法:
.off( events [, selector ] [, handler ] )
將.unbind()
的js代碼改成:
<script>
$('a').on('click', function() { alert("That tickles!") });
$('a').on('mouseenter', function() { console.log("That tickles!") });
$('a').off('click');
</script>
5.jquery 如何展示/隱藏元素目木?
- 1.jquery用
show()
展示元素,用hide()
隱藏元素懊渡,.toggle()
顯示或隱藏匹配元素刽射,如果當前元素是隱藏的,用.toggle()
可以顯示出來剃执;如果當前元素是顯示的誓禁,用.toggle()
可以隱藏起來。
1.1 簡單的隱藏:
<!DOCTYPE html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
<meta charset="utf-8">
<title>顯示/隱藏元素</title>
</head>
<body>
<div>
<h1>標題1</h1>
<p>這是一段文字肾档。</p>
<button id="close" name="openbutton">隱藏標題</button>
<button id="open" name="closebutton">顯示標題</button>
<button id="oc" name="button">顯示/隱藏標題</button>
<script>
$("#close").on('click',function(){
$("h1").hide();
})
$("#open").on('click',function(){
$("h1").show();
})
$("#oc").on('click',function(){
$("h1").toggle();
})
</script>
</div>
</body>
</html>
效果
1.2 .show()
摹恰,.hide()
,.toggle()
還有以下用法:
.show( duration [, easing ] [, complete ] )
.hide( duration [, easing ] [, complete ] )
.toggle( [duration ] [, complete ] )
其中怒见,duration設置顯示/隱藏經過的時間戒祠,可以用毫秒,fast速种,slow等姜盈。
** [, easing ]設置顯示/隱藏時元素的速度。默認值為 swing(在開頭/結尾移動慢配阵,在中間移動快)馏颂。還可以是linear(勻速移動)示血。
** [, complete ]設置顯示/隱藏元素后的操作。
舉例:
<!DOCTYPE html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
<meta charset="utf-8">
<title>顯示/隱藏元素</title>
</head>
<body>
<div>
<h1>標題1</h1>
<p>這是一段文字救拉。</p>
<h3>標題2</h3>
<button id="close" name="openbutton">隱藏標題</button>
<button id="open" name="button">顯示標題</button>
<button id="oc" name="button">顯示/隱藏標題</button>
<script>
$("#close").on('click',function(){
$("h1").hide(400,function(){
$("p").hide(200);
})
})
$("#open").on('click',function(){
$("h1").show(400,function(){
$("p").show(200);
})
})
$("#oc").on('click',function(){
$("h1").toggle(400,function(){
$("p").toggle(200);
})
})
</script>
</div>
</body>
</html>
- 2.還可以用
.fadeIn()
淡入效果顯示元素,.fadeOut
淡出效果隱藏元素难审,.fadeToggle()
淡入或者淡出顯示或者隱藏元素。
將1.1中的.hide()
換成.fadeOut()
亿絮,.show()
換成fadeIn()
,.toggle()
換成.fadeToggle()
告喊。也可以隱藏或者顯示元素。
效果
也有以下用法派昧,和.show()
黔姜,.hide()
類似。
.fadeIn( [duration ] [, easing ] [, complete])
.fadeOut( [duration ] [, easing ] [, complete])
.fadeToggle( [duration ] [, easing ] [, complete])
- 3.
.slideDown()
方法用于向下滑動顯示元素,.slideUp()
方法用于向上滑動隱藏元素,.slideToggle()
方法可以在. slideDown()
與.slideUp()
方法之間進行切換蒂萎。
如果元素向下滑動秆吵,則. slideToggle()
可向上滑動隱藏它們。
如果元素向上滑動五慈,則. slideToggle()
可向下滑動顯示它們纳寂。
<!DOCTYPE html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
<meta charset="utf-8">
<title>顯示/隱藏元素</title>
</head>
<body>
<div>
<h1>標題1</h1>
<p>這是一段文字。</p>
<button id="close" name="openbutton">隱藏標題</button>
<button id="open" name="closebutton">顯示標題</button>
<script>
$("#close").on('click',function(){
$("h1").slideUp(400);
})
$("#open").on('click',function(){
$("h1").slideDown(400);
})
</script>
</div>
</body>
</html>
效果
把.slideDown()
和slideUp()
都換成.slideToggle()
是一樣的效果泻拦。
效果
關于這幾個用法毙芜,也有
.slideDown( [duration ] [, easing ] [, complete ] )
.slideUp( [duration ] [, easing ] [, complete ] )
.slideToggle( [duration ] [, easing ] [, complete ] )
這幾個方法,用法同.hide()
争拐。
6.jquery 動畫如何使用腋粥?
jQuery動畫用.animate()
實現(xiàn)。表示根據(jù)一組 CSS 屬性陆错,執(zhí)行自定義動畫。
寫法:
.animate( properties [, duration ] [, easing ] [, complete ] )
中括號中的屬性是可選的金赦。properties是必須的音瓷,設置一些CSS屬性。
duration可選夹抗。設置動畫運行的時間绳慎。可以是normal漠烧,fast杏愤,slow或者數(shù)字表示毫秒數(shù)。
easing可選已脓。設置動畫的過渡方式珊楼。jQuery提供swing和linear兩種方式。
complete可選度液。在動畫完成時執(zhí)行的函數(shù)厕宗。
舉例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>動畫</title>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
<style>
#container {
position: relative;
width: 100px;
height: 100px;
background: red;
margin-bottom: 5px;
}
</style>
</head>
<body>
<div id="container"></div>
<button id="move">動起來</button>
<script>
$('#move').on('click',function(){
$('#container').animate({width:200,height:200,top: 100,left:0});
$('#container').animate({width:200,height:200,top: 100,left:100});
$('#container').animate({width:150,height:150,top: 0,left:100});
$('#container').animate({width:100,height:100,top: 0,left:0});
})
</script>
</body>
</html>
效果
在動畫運行過程中可以 停止運行画舌。上面的代碼相當于每個動畫動作排在一個隊列中。
.finish()會停止當前動畫動作已慢,并會導致所有排隊的動畫的CSS屬性跳轉到他們的最終值曲聂。即停止當前正在運行的動畫,刪除所有排隊的動畫佑惠,并完成匹配元素所有的動畫朋腋。
.stop()停止匹配元素當前正在運行的動畫。
.stop( [queue ] [, clearQueue ] [, jumpToEnd ] )
queue (默認: false)設置停止動畫隊列的名稱膜楷。
clearQueue一個布爾值旭咽,指示是否取消當前列隊動畫。默認 false把将,表示不取消轻专。為true時表示取消,而且隊列中的其余的動畫也被刪除并且永遠不會運行察蹲。
jumpToEnd 一個布爾值指示是否當前動畫立即完成请垛。默認false,表示當前動畫立即完成。true表示當前動畫停止洽议,并且立刻移動到當前動畫的目標位置宗收。
.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>finish demo</title>
<style>
.box {
position: absolute;
top: 10px;
left: 10px;
width: 15px;
height: 15px;
background: black;
}
#path {
height: 280px;
font-size: 70%;
border-left: 2px dashed red;
border-bottom: 2px dashed green;
border-right: 2px dashed blue;
}
button {
width: 12em;
display: block;
text-align: left;
margin: 0 auto;
}
</style>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
</head>
<body>
<div class="box"></div>
<div id="path">
<button id="go">Go</button>
<br>
<button id="bstt" class="b">.stop( true,true )</button>
<button id="bcf" class="b">.clearQueue().finish()</button>
<br>
<button id="bstf" class="b">.stop( true, false )</button>
<button id="bcs" class="b">.clearQueue().stop()</button>
<br>
<button id="bsff" class="b">.stop( false, false )</button>
<button id="bs" class="b">.stop()</button>
<br>
<button id="bsft" class="b">.stop( false, true )</button>
<br>
<button id="bf" class="b">.finish()</button>
</div>
<script>
var horiz = $( "#path" ).width() - 5,
vert = $( "#path" ).height()-7;
var btns = {
bstt: function() {
$( "div.box" ).stop( true, true );
},
bs: function() {
$( "div.box" ).stop();
},
bsft: function() {
$( "div.box" ).stop( false, true );
},
bf: function() {
$( "div.box" ).finish();
},
bcf: function() {
$( "div.box" ).clearQueue().finish();
},
bsff: function() {
$( "div.box" ).stop( false, false );
},
bstf: function() {
$( "div.box" ).stop( true, false );
},
bcs: function() {
$( "div.box" ).clearQueue().stop();
}
};
$( "button.b" ).on( "click", function() {
btns[ this.id ]();
});
$( "#go" ).on( "click", function() {
$( ".box" )
.clearQueue()
.stop()
.css({
left: 10,
top: 10
})
.animate({
top: vert
}, 3000 )
.animate({
left: horiz
}, 3000 )
.animate({
top: 10
}, 3000 );
});
</script>
</body>
</html>
7.如何設置和獲取元素內部 HTML 內容?如何設置和獲取元素內部文本亚兄?
1.設置和獲取元素內部HTML內容用到.html()
方法混稽。
.html()
沒有參數(shù)。獲取集合中第一個匹配元素的HTML內容审胚。
.html(htmlstring/function)
有參數(shù)匈勋。設置每一個匹配元素的html內容。里面可以是HTML內容或者是函數(shù)膳叨。
2.設置和獲取元素內部文本用到.text()
方法洽洁。
.text()
沒有參數(shù)。得到匹配元素集合中每個元素的文本內容結合菲嘴,包括他們的后代饿自。
.text(textstring/function)
有參數(shù)。設置匹配元素集合中每個元素的文本內容為指定的文本內容龄坪。
舉例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>獲取昭雌、設置元素</title>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
</head>
<body>
<h1 id="header">標題</h1>
<p id="description">這是<b>粗體</b>文字</p>
<button id="get">獲取</button>
<button id="set">設置</button>
<button id="gettext">獲取文本</button>
<button id="settext">設置文本</button>
<script>
$('#get').on('click',function(){
alert($('p').html());
})
$('#set').on('click',function(){
$('p').html('字體變<i>斜</i>了');
})
$('#gettext').on('click',function(){
alert($('p').text());
})
$('#settext').on('click',function(){
$('p').text('字體變<i>斜</i>了?');
})
</script>
</body>
</html>
8.如何設置和獲取表單用戶輸入或者選擇的內容健田?如何設置和獲取元素屬性烛卧?
1.設置和獲取表單用戶輸入或者選擇的內容用到.val()
方法。
.val()
沒有參數(shù)妓局。獲取集合中第一個匹配表單的內容唱星。
.val(htmlstring/function)
有參數(shù)雳旅。設置每一個匹配表單的內容。里面可以是HTML內容或者是函數(shù)间聊。
2.設置和獲取元素屬性用到.attr()
方法攒盈。
.attr(attributeName )
獲取匹配的元素集合中的第一個元素的屬性的值
.attr(attributeName,value )
設置每一個匹配元素的一個或多個屬性哎榴。
舉例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表單</title>
<style>
button {
margin-top: 10px;
}
</style>
<script src="http://apps.bdimg.com/libs/jquery/1.7.1/jquery.js"></script>
</head>
<body>
<h3>表單</h3>
<input type="text" id="content">
<img data-img="http://js.jirengu.com/images/dave.min.svg"><br/>
<button id="get">獲取表單</button>
<button id="set">設置表單</button>
<button id="getvalue">獲取屬性</button>
<button id="setvalue">設置屬性</button>
<script>
$('#get').on('click',function(){
alert($('#content').val());
})
$('#set').on('click',function(){
$('#content').val('123<i>456</i>')
})
$('#getvalue').on('click',function(){
alert($('img').attr('data-img'));
})
$('#setvalue').on('click',function(){
$('img').attr('src',$('img').attr('data-img'));
})
</script>
</body>
</html>
效果
本文版權歸本人和饑人谷所有型豁,轉載請注明出處。