jQuery 能做什么
jQuery庫為Web腳本編程提供了通用(跨瀏覽器)的抽象層,使得它幾乎適用于任何腳本編程的情形。
- 便捷的獲取DOM元素
- 動態(tài)修改頁面樣式
- 動態(tài)改變DOM內(nèi)容
- 響應(yīng)用戶的頁面操作
- 為頁面添加動態(tài)效果
- 同意AJAX操作
- 簡化常見的JavaScript任務(wù)
jQuery 對象和 DOM 原生對象有什么區(qū)別?如何轉(zhuǎn)化?
- jQuery對象是通過jQuery包裝DOM對象后產(chǎn)生的對象;DOM對象就是一個對象,二jQuery對象是一個類數(shù)組對象;jQuery對象不能使用DOM對象的方法進(jìn)行操作,DOM對象不能使用jQuery對象的方法進(jìn)行操作
- $(DOM對象) ===> jQuery對象
- (jQuery對象).[0]或者(jQuery對象).get(0) ===> DOM對象
jQuery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
- bind 為一個元素綁定一個事件處理程序
- unbind 從元素上刪除一個以前附加事件處理程序
- delegate 為所有匹配選擇器(selector參數(shù))的元素綁定一個或多個事件處理函數(shù),基于一個指定的根元素的子集,匹配的元素包括那些目前已經(jīng)匹配到的元素,也包括那些今后可能匹配到的元素
- live 附加一個事件處理器到匹配目前選擇器的所有元素,現(xiàn)在和未來
- on 在選定的元素上綁定一個或多個事件處理函數(shù)
- off 移除一個事件處理函數(shù)
現(xiàn)在推薦使用on/off來添加/移除事件
事件代理示例:
$('table').on('click', 'th', function(e){
console.log(this);
})
jQuery 如何展示/隱藏元素?
1、show()方法
$('.target').show();
匹配的元素將被立即顯示,沒有動畫。
對應(yīng)的隱藏方法是 .hide();
2、fadeIn() 動畫表現(xiàn)形式淡入
.fadeIn( [duration ] [, complete ] )
第一個參數(shù) 動畫用時
第二個參數(shù) 動畫完成后執(zhí)行的函數(shù)
$('.target').fadeIn(1000,function(){});
對應(yīng)的隱藏方法是 fadeOut(),互相切換是 fadeToggle()
3、slideDown() 動畫表現(xiàn)形式下拉
.slideDown( [duration ] [, complete ] )
$('.target').slideDown(1000,function(){});
對應(yīng)的隱藏方法是slideUp(),互相切換是slideToggle()
jQuery 動畫如何使用?
.animate( properties [, duration ] [, easing ] [, complete ] )
描述: 根據(jù)一組 CSS 屬性,執(zhí)行自定義動畫。
animate({left:'80',top},5000,)
properties:一個CSS屬性和值的對象,動畫將根據(jù)這組對象移動。
duration: 動畫持續(xù)多久,1000,2000...
easing: 過渡使用哪種緩動函數(shù),jQuery自身提供 linear swing 2種
complete: 動畫完成時執(zhí)行的函數(shù)
如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本?
- 設(shè)置元素內(nèi)部HTML內(nèi)容:
$("target").html("content") - 獲取元素內(nèi)部HTML內(nèi)容:
$("target").html() - 設(shè)置元素內(nèi)部文本內(nèi)容:
$("target").text("content") - 獲取元素內(nèi)部文本內(nèi)容:
$("target").text()
如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性?
- 設(shè)置表單用戶輸入或者選擇的內(nèi)容
$("target").val("content") - 獲取表單用戶輸入或者選擇的內(nèi)容
$("target").val() - 設(shè)置元素屬性
$("target").attr("attributeName","value") - 獲取元素屬性
$("target").attr("attributeName")
使用 jQuery實(shí)現(xiàn)如下效果
<!doctype html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<style>
ul,li {
margin: 0;
padding: 0;
list-style: none;
}
a {
margin: 0;
padding: 0;
text-decoration: none;
}
.nav>li {
position: relative;
background: red;
height: 45px;
width: 150px;
color: white;
border-bottom: 1px solid white;
}
.nav>li>a {
padding: 0 40px 0 15px;
vertical-align: center;
color: white;
}
span {
line-height: 45px;
vertical-align: center;
}
.child-nav {
position: absolute;
top: 0;
left: 150px;
width: 110px;
border: 1px solid grey;
display: none;
}
.child-nav>ul:after {
content: "";
display: block;
clear: both;
}
.child-nav li {
float: left;
padding: 10px;
}
</style>
<body>
<ul class="nav">
<li>
<a href="">珠寶玉器</a>
<span>></span>
<ul class="child-nav">
<li><a href="">翡翠</a></li>
<li><a href="">玉石</a></li>
<li><a href="">珍珠</a></li>
<li><a href="">瑪瑙</a></li>
<li><a href="">翠玉</a></li>
<li><a href="">琥珀</a></li>
</ul>
</li>
<li>
<a href="">珠寶玉器</a>
<span>></span>
<ul class="child-nav">
<li><a href="">翡翠</a></li>
<li><a href="">玉石</a></li>
<li><a href="">珍珠</a></li>
<li><a href="">瑪瑙</a></li>
</ul>
</li>
<li>
<a href="">珠寶玉器</a>
<span>></span>
<ul class="child-nav">
<li><a href="">翡翠</a></li>
<li><a href="">玉石</a></li>
<li><a href="">珍珠</a></li>
<li><a href="">瑪瑙</a></li>
</ul>
</li>
<li>
<a href="">珠寶玉器</a>
<span>></span>
<ul class="child-nav">
<li><a href="">翡翠</a></li>
<li><a href="">玉石</a></li>
<li><a href="">珍珠</a></li>
<li><a href="">瑪瑙</a></li>
</ul>
</li>
<li>
<a href="">珠寶玉器</a>
<span>></span>
<ul class="child-nav">
<li><a href="">翡翠</a></li>
<li><a href="">玉石</a></li>
<li><a href="">珍珠</a></li>
<li><a href="">瑪瑙</a></li>
<li><a href="">翠玉</a></li>
<li><a href="">琥珀</a></li>
</ul>
</li>
</ul>
<script>
$(".nav").on("mouseenter", "li", function(){
$(this).children("ul").css("display", "block")
})
$(".nav").on("mouseleave", "li", function(){
$(this).children("ul").css("display", "none")
})
</script>
</body>
</html>
使用 jQuery 實(shí)現(xiàn)如下效果
<!doctype html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<style>
body {
font-size: 12px;
color: #b2b4b7;
}
ul,li,h4,p {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
a {
text-decoration: none;
color: #b2b4b7;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.title {
border: 1px solid #b2b4b7;
border-radius: 3px 3px 0px 0px;
margin: 0px;
display: inline-block;
margin-bottom: -4px;
border-bottom: none;
}
.title .btn {
float: left;
padding: 8px 0px;
}
.title .btn a {
display: inline-block;
padding: 0px 8px;
border-right: 1px solid #b2b4b7;
}
.title .btn:last-child a {
border-right: none;
}
.container {
border: 1px solid #b2b4b7;
width: 676px;
margin-bottom: 30px;
}
.container .panel {
margin-left: -20px;
display: none;
}
.container .item {
float: left;
border: 1px solid #b2b4b7;
width: 170px;
padding: 20px;
margin-left: 20px;
margin-bottom: 20px;
position: relative;
}
.container .item img {
display: block;
width: 130px;
margin: 0 auto;
}
.container .item p {
color: red;
}
.container .last {
margin-bottom: 0px;
}
.container .cover {
background-color: rgba(0,0,0,0.2);
z-index: 1;
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
text-align: center;
display: none;
}
.container .cover:after {
content: "";
display: inline-block;
width: 0;
height: 100%;
vertical-align: middle;
}
.container .cover a {
border: 1px solid red;
border-radius: 2px;
color: red;
padding: 15px;
background-color: white;
display: inline-block;
vertical-align: middle;
}
.container .active {
display: block;
}
.hover {
background-color: #b2b4b7;
color: red;
}
</style>
<body>
<div class="wrap">
<ul class="title clearfix">
<li class="btn"><a href="">熱門</a></li>
<li class="btn"><a href="">珠寶首飾</a></li>
<li class="btn"><a href="">奢侈品</a></li>
</ul>
<div class="container">
<ul class="panel clearfix active">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
<ul class="panel clearfix">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥3699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥199</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1639</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
<ul class="panel clearfix">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥3699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥2699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1299</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥2199</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1639</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
</div>
</div>
<div class="wrap">
<ul class="title clearfix">
<li class="btn"><a href="">熱門</a></li>
<li class="btn"><a href="">珠寶首飾</a></li>
<li class="btn"><a href="">奢侈品2</a></li>
</ul>
<div class="container">
<ul class="panel clearfix active">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
<ul class="panel clearfix">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥3699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥199</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1639</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
<ul class="panel clearfix">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥3699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥2699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1299</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥2199</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item last">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1639</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
</div>
</div>
<script>
$(".item").on("mouseenter", function(){
$(this).children(".cover").addClass("active")
}).on("mouseleave", function(){
$(this).children(".cover").removeClass("active")
})
$(".title .btn").on("click", function(e){
e.preventDefault()
$(this).siblings().removeClass("hover")
$(this).siblings().children("a").removeClass("hover")
$(this).addClass("hover")
$(this).children("a").addClass("hover")
var index = $(this).index()
$(this).parents(".wrap").find(".panel").removeClass("active")
$(this).parents(".wrap").find(".panel").eq(index).addClass("active")
})
</script>
</body>
</html>
實(shí)現(xiàn)如下效果
<!doctype html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<style>
body {
font-size: 12px;
color: #b2b4b7;
}
ul,li,h4,p {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
a {
text-decoration: none;
color: #b2b4b7;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.container {
width: 676px;
}
.container .panel {
margin-left: -20px;
display: none;
}
.container .item {
float: left;
border: 1px solid #b2b4b7;
width: 170px;
padding: 20px;
margin-left: 20px;
margin-bottom: 20px;
position: relative;
}
.container .item img {
display: block;
width: 130px;
margin: 0 auto;
}
.container .item p {
color: red;
}
.container .cover {
background-color: rgba(0,0,0,0.2);
z-index: 1;
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
text-align: center;
display: none;
}
.container .cover:after {
content: "";
display: inline-block;
width: 0;
height: 100%;
vertical-align: middle;
}
.container .cover a {
border: 1px solid red;
border-radius: 2px;
color: red;
padding: 15px;
background-color: white;
display: inline-block;
vertical-align: middle;
}
.container .active {
display: block;
}
.hover {
background-color: #b2b4b7;
color: red;
}
.btn {
display: inline-block;
padding: 10px;
border: 1px solid red;
color: red;
border-radius: 2px;
}
</style>
<body>
<div class="container">
<h1>珠寶首飾</h1>
<ul class="panel clearfix active">
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
<li class="item">

<h4 class="name">藏美千足金和田玉金鑲玉路路通吊墜</h4>
<p class="price">¥1699</p>
<div class="cover">
<a href="">立即搶購</a>
</div>
</li>
</ul>
<a href="" class="btn">添加</a>
</div>
<script>
var products = [
{
img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
name: '珂蘭 黃金手 猴哥款',
price: '¥405.00'
},{
img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
name: '珂蘭 黃金轉(zhuǎn)運(yùn)珠 猴哥款',
price: '¥100.00'
},{
img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
name: '珂蘭 黃金手鏈 3D猴哥款',
price: '¥45.00'
}
]
$(".btn").on("click", function(e){
e.preventDefault()
addHTML(products)
})
showCover()
function addHTML(json){
var html = ""
for (i=0; i<json.length; i++){
html += '<li class="item">'
html += ''
html += '<h4 class="name">' + json[i].name + '</h4>'
html += '<p class="price">' + json[i].price + '</p>'
html += '<div class="cover">'
html += '<a href="">立即搶購</a>'
html += '</div></li>'
}
console.log(html)
$(".panel").append(html)
}
function showCover(){
$(".panel").on("mouseenter", ".item", function(){
$(this).children(".cover").addClass("active")
}).on("mouseleave", ".item", function(){
$(this).children(".cover").removeClass("active")
})
}
</script>
</body>
</html>
完成 左右切換的 Tab 效果
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Task14-4</title>
<style>
ul,li{
margin: 0;
padding: 0;
list-style: none;
}
.row1{
display: flex;
margin-top: 30px;
height: 30px;
border: 1px solid lightgray;
border-right: none;
}
.tab{
width: 33.33%;
line-height: 30px;
text-align: center;
border-right: 1px solid lightgray;
cursor: pointer;
}
.active {
background: #eee;
}
.row2{
height: 181px;
overflow: hidden;
}
.content{
position: relative;
top: 0;
padding: 20px 0 0 20px;
height: 160px;
background: red;
border: 1px solid lightgray;
border-top: none;
}
.content2{
background: green;
}
.content3{
background: blue;
}
</style>
</head>
<body>
<ul class="row1">
<li class="tab active">tab1</li>
<li class="tab">tab2</li>
<li class="tab">tab3</li>
</ul>
<ul class="row2">
<li class="content">content 1</li>
<li class="content content2">content 2</li>
<li class="content content3">content 3</li>
</ul>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$('.tab').on('click',function(){
var $cur = $(this);
var idx = $cur.index();
var height = $('.row2').height();
$cur.addClass('active').siblings().removeClass('active');
$cur.parents('body').find('.content').animate({top:-height*idx});
});
</script>
</body>
</html>