題目1: 說說庫和框架的區別?
庫:很多工具的集合,實現一個效果可以使用工具簡化流程
框架:結構框架,依據框架填充內容
庫是將代碼集合成的一個產品,供程序員調用。面向對象的代碼組織形式而成的庫也叫類庫。面向過程的代碼組織形式而成的庫也叫函數庫。
在函數庫中的可直接使用的函數叫庫函數。開發者在使用庫的時候,只需要使用庫的一部分類或函數,然后繼續實現自己的功能。
框架則是為解決一個(一類)問題而開發的產品,框架用戶一般只需要使用框架提供的類或函數,即可實現全部功能。可以說,框架是庫的升級版。
開發者在使用框架的時候,必須使用這個框架的全部代碼。
題目2: jquery 能做什么?
- 選擇網頁元素
- 改變結果集
- 元素的操作:取值和賦值
- 元素的操作:移動
- 元素的操作:復制、刪除和創建
- 工具方法
- 事件操作
- 特殊效果
- AJAX
題目3: jquery 對象和 DOM 原生對象有什么區別?如何轉化?
DOM 原生對象,原生JS對象有自己的屬性和方法;
jQuery對象是對原生JS對象的封裝,jQuery對象有自己的屬性和方法與原生JS對象不同;
用法區別
將DOM對象轉換為jQuery對象加$符,如$(btn)
將jQuery對象轉換為DOM對象加下標,如$('.btn')[0]
題目4:jquery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
.on( events [,selector ] [,data ], handler(eventObject) )
bind():bind()向匹配元素添加一個或多個事件處理器。
$(selector).bind(event,data,function)unbind():通過 .unbind(eventType,false) 解除bind()函數綁定。
delegate():delegate() 為指定的元素(被選元素的子元素)添加一個或多個事件處理程序,并規定當這些事件發生時運行的函數。使用 delegate() 方法的事件處理程序適用于當前或未來的元素(比如由腳本創建的新元素)。
$(selector).delegate(childSelector,event,data,function)live():live() 向當前或未來的匹配元素添加一個或多個事件處理器。
$(selector).live(event,data,function)on():on() 為指定的元素,添加一個或多個事件處理程序,并規定當這些事件發生時運行的函數。使用 on() 方法的事件處理程序適用于當前或未來的元素(比如由腳本創建的新元素)。
$(selector).on(event,childselector,data,function)off():主要用于解除由on()函數綁定的事件處理函數。off所解除元素的綁定事件,其中選擇器必須和on綁定事件時所用的選擇器一致。
1.bind()函數只能針對已經存在的元素進行事件的設置;但是live(),on(),delegate()均支持未來新添加元素的事件設置;
2.bind()函數在jquery1.7版本以前比較受推崇,1.7版本出來之后,官方已經不推薦用bind(),替代函數為on(),這也是1.7版本新添加的函數,同樣,可以用來代替live()函數,live()函數在1.9版本已經刪除;
3.live()函數和delegate()函數兩者類似,但是live()函數在執行速度,靈活性和CSS選擇器支持方面較delegate()差些;
推薦用delegate(),高版本jquery可以使用on()來代替。
// 事件委托或者事件代理,想讓div 下面所有的span綁定事件,可以把事件綁定到div上
console.log(this);
console.log(e);
});```
題目5:jquery 如何展示/隱藏元素?
- 展示元素:$( this ).css( "display", "block" );
- 隱藏元素:$( this ).css( "display", "none" );
題目6: jquery 動畫如何使用?
基礎
- .hide([duration ] [,easing ] [,complete ])
用于隱藏元素,沒有參數的時候等同于直接設置display屬性。
- .show( [duration ] [, easing ] [, complete ] )
用于顯示元素,用法和hide類似。
- .toggle( [duration ] [, easing ] [, complete ] )
用來切換元素的隱藏、顯示,類似于toggleClass,用法和show、hide類似。
漸變
- .fadeIn( [duration ] [, easing ] [, complete ] )
通過淡入的方式顯示匹配元素,參數含義和上面相同。
- .fadeOut( [duration ] [, easing ] [, complete ] )
通過淡出的方式隱藏匹配元素。
- .fadeTo( duration, opacity [, easing ] [, complete ] )
調整匹配元素的透明度,方法通過匹配元素的不透明度做動畫效果。
- .fadeToggle( [duration ] [, easing ] [, complete ] )
通過匹配的元素的不透明度動畫,來顯示或隱藏它們,方法執行匹配元素的不透明度動畫。當被可見元素調用時,元素不透明度一旦達到0,display樣式屬性設置為none ,所以元素不再影響頁面的布局。
滑動
- .slideDown( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑下去,彌補了顯示的方式。
- .slideUp( [duration ] [, easing ] [, complete ] )
用滑動動畫隱藏一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑上去,當一個隱藏動畫后,高度值達到0的時候,display 樣式屬性被設置為none,以確保該元素不再影響頁面布局。 display 樣式屬性將被設置為none,以確保該元素不再影響頁面布局。
- .slideToggle( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示或隱藏一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面中,在這個元素下面的內容往下或往上滑。display屬性值保存在jQuery的數據緩存中,所以display可以方便以后可以恢復到其初始值。
自定義
- .animate( properties [, duration ] [, easing ] [, complete ] )
- .animate( properties, options )
題目7:如何設置和獲取元素內部 HTML 內容?如何設置和獲取元素內部文本?
設置元素內部html:$('div').html('123')
獲取元素內部html:$('div').html()
設置元素內部文本:$('div').text('123')
獲取元素內部文本:$('div').text()
題目8:如何設置和獲取表單用戶輸入或者選擇的內容?如何設置和獲取元素屬性?
$('input').val()
為元素屬性賦值:.attr(attributeName,value) / .attr(attributesJson) / .attr( attributeName, function(index, attr) )
獲取元素特定屬性的值:.attr(attributeName)
題目9: 使用 jquery實現如下效果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<style>
.nav-aside{
background: #c7171e;
width: 200px;
}
.category .cate-title{
display: block;
color: #fff;
border-bottom: 1px dotted #de272e;
margin: 0 10px;
padding: 10px;
font-size: 14px;
}
.category{
position: relative;
}
.category .panel{
color: #fff;
position: absolute;
right: 10px;
top: 10px;
font-size: 14px;
}
.category .child-products{
position: absolute;
top: 0;
left: 200px;
background: #fff;
border: 1px solid #ccc;
width: 210px;
font-size: 12px;
display: none;
}
.child-products li{
float: left;
width: 55px;
padding: 10px 20px;
}
ul, li{
list-style: none;
margin: 0;
padding: 0;
}
a{
text-decoration: none;
}
</style>
</head>
<body>
<div class="area-nav">
<ul class="nav-aside">
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
<li>鉆石</li>
<li>琥珀</li>
<li>和田</li>
<li>琥珀</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
</ul>
</li>
</ul>
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>
$('.nav-aside .category').on('mouseenter', function(){
$(this).find('.child-products').css('display', 'block');
})
$('.nav-aside .category').on('mouseleave', function(){
$(this).find('.child-products').css('display', 'none');
})
</script>
</body>
</html>