jQuery學習記錄三
元素新增方法
*注意兩者之間的區別:prepend()方法,新增的位置是元素的第一個子元素
*before()、after()方法新增的兄弟節點
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> div{ width: 300px; height: 200px; border:1px solid red; } </style> <script src="jquery-1.12.2.js"></script> <script> $(function () { //點選按鈕,建立元素 $("#btn").click(function () { //把建立的span標籤這個子元素直接插入到div中第一個子元素的前面 $("#dv").prepend($("<span>this is span</span>")); //主動的方式 //$("<span>this is span</span>").prependTo($("#dv")); //把元素新增到div的後面的位置,是div的下一個兄弟元素了 //$("#dv").after($("<span>this is span</span>")); //把元素新增到div的前面的位置,是div的上一個兄弟元素了 //$("#dv").before($("<span>this is span</span>")); }); }); </script> </head> <body> <input type="button" value="建立一個按鈕" id="btn"/> <div id="dv"> <p>這是一個p</p> </div> <p>這是div後面的第一個子元素</p> </body> </html>
元素的移除
*empty()只是清空,remove()方法是自殺。。。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> div{ width: 200px; height: 100px; border: 2px solid red; } </style> <script src="jquery-1.12.2.js"></script> <script> //頁面載入 $(function () { //點選按鈕 $("#btn").click(function () { //從父級元素中移除子級元素---移除所有的子元素 //$("#dv").html(""); //清空父元素中的子元素 $("#dv").empty();//清空 //想要幹掉誰,直接找到這個元素,呼叫這個方法就可以了 //$("#dv").remove();//自殺--- }); }); </script> </head> <body> <input type="button" value="移除元素" id="btn"/> <div id="dv"> <p>這是一個p</p> <span>這是一個span</span> </div> </body> </html>
案例:許可權的設定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> </style> <script src="jquery-1.12.2.js"></script> <script> //頁面載入 $(function () { $("#toright").click(function () { $('#se1>option:selected').appendTo($('#se2')); }); $("#toleft").click(function () { $('#se2>option:selected').appendTo($('#se1')); }); $("#toallright").click(function () { $('#se1>option').appendTo($('#se2')); }); $("#toAllLeft").click(function () { $('#se2>option').appendTo($('#se1')); }); }); </script> </head> <body> <div style="margin-left:500px;margin-top:20px;"> <select multiple="multiple" style="float:left;width: 60px;height: 100px;" id="se1"> <option>新增</option> <option>刪除</option> <option>修改</option> <option>查詢</option> <option>列印</option> </select> <div style="width: 50px;float: left;"> <input type="button" name="name" value=">" style="width:50px;" id="toRight"> <input type="button" name="name" value="<" style="width:50px;" id="toLeft"> <input type="button" name="name" value=">>" style="width:50px;" id="toAllRight"> <input type="button" name="name" value="<<" style="width:50px;" id="toAllLeft"> </div> <select multiple="multiple" style="float:left;width: 60px;height: 100px;" id="se2"> </select> </div> </body> </html>
value屬性的獲取和設定
*select那個標籤選中的方式有點怪異。。。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//點選按鈕,獲取文字框的value屬性,和設定
console.log($("#txt").val());
$("#txt").val("今天天氣一點也不好");
//點選按鈕設定單選框的value屬性
//$("#r2").val("哦天啊"); 設定標籤的value屬性
//$("#ck3").val("改了");
//獲取文字域中的value值
console.log($("#tt2").val()); 這兩種方式都可以獲取文字域中的值
console.log($("#tt2").text());
//設定文字域中的文字內容--可以設定的
$("#tt2").val("小蘇好猥瑣哦,哈哈");
//推薦使用下面的方式-----jQuery的寫法
$("#tt2").text("好神奇哦"); 文字推薦方法
//為select標籤中value屬性是5的這個option標籤選中
//$("#s1").val(5);//選中的意思,
});
});
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<input type="text" value="今天天氣很好" id="txt" /><br/>
<input type="radio" value="1" name="sex"/>男
<input type="radio" value="2" name="sex" id="r2"/>女
<input type="radio" value="3" name="sex"/>保密
<br/>
<input type="checkbox" value="1" />吃飯
<input type="checkbox" value="2" />睡覺
<input type="checkbox" value="3" id="ck3"/>打豆豆
<input type="checkbox" value="4" />打鉛球
<br/>
<textarea name="tt" id="tt2" cols="30" rows="10">
hello world!
</textarea>
<select id="s1">
<option value="1">妲己</option>
<option value="2">王昭君</option>
<option value="3">西施</option>
<option value="4">貂蟬</option>
<option value="5">小喬</option>
<option value="6">大喬</option>
<option value="7">武則天</option>
</select>
</body>
</html>
元素選中的問題
//DOM中操作
//document.getElementById("r3").checked=true;
//jQuery操作
//$("#r3").get(0).checked=true;//DOM的寫法
獲取:
*注:attr方法針對單選框或者是複選框的是否選中問題,操作起來很麻煩,幾乎不用,後面說
//獲取是否被選中了
//console.log($("#r3").attr("checked")); 未選中預設為 undefined
//同樣也可以通過這種方式來進行值的設定
//$("#r3").attr("checked",true);//設定
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("#btn").click(function () {
選擇性別之後,點選選中
if($("#r3").attr("checked")==undefined){
//undefined
$("#r3").attr("checked",true);
console.log("哈哈");
}else{
//checked--->選中了
$("#r3").attr("checked",false);
console.log("嘎嘎");
}
});
});
</script>
</head>
<body>
<input type="button" value="選中" id="btn"/><br/>
請選擇小蘇的性別:
<input type="radio" value="1" name="sex"/>男
<input type="radio" value="2" name="sex"/>女
<input type="radio" value="3" name="sex" id="r3"/>人妖
</body>
</html>
自定義屬性
* .attr(引數1,引數2);-----設定某個屬性的值
* .attr(引數1);-----獲取某個屬性的值
*
* 引數1:屬性的名字
* 引數2:屬性的值
*
* .attr方法主要是操作元素的自定義屬性的,但是也可以操作元素的自帶的屬性(html中本身就有的屬性),但是:操作元素的選中的ckeched的時候,不是很合適!
* 操作元素的選中的checked的時候,推薦使用prop方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//$("#uu>li").attr("score",100);
$("#ak").attr("href","http://www.baidu.com");
$("#ak").text("百度");
});
});
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<a id="ak"></a>
<ul id="uu">
<li>小白</li>
<li>小黑</li>
<li>小紅</li>
<li>小綠</li>
</ul>
</body>
</html>
設定或者是獲取元素的選中的問題
* 推薦使用prop()方法
* .prop("屬性",值); 值一般是布林型別----->目前這麼寫程式碼是設定選中
* .prop("屬性");-----獲取這個元素是否選中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//點選按鈕
$("#btn").click(function () {
// $("#ck7").attr("checked",true);
//獲取複選框是否選中
//console.log($("#ck7").prop("checked"));
$("#ck7").prop("checked", true);
});
});
</script>
</head>
<body>
<input type="button" value="選中/不選中" id="btn"/>
<input type="checkbox" value="1" name="play"/>吃飯
<input type="checkbox" value="6" name="play"/>打鉛球
<input type="checkbox" value="7" name="play" id="ck7"/>打小蘇
</body>
</html>
案例:選中和不選中切換
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//點選按鈕
$("#btn").click(function () {
//點一下,選中了,再點,就不再選中了,
if($("#ck").prop("checked")){
//選中了,就應該變成不是選中的狀態
$("#ck").prop("checked",false);
}else{
$("#ck").prop("checked",true);
}
});
});
</script>
</head>
<body>
<input type="button" value="選中/不選中" id="btn"/>
<input type="checkbox" value="1" name="play" id="ck" />玩遊戲
</body>
</html>
案例:全選/全不選
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
* {
padding: 0;
margin: 0;
}
.wrap {
width: 300px;
margin: 100px auto 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #c0c0c0;
}
th,
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
}
th {
background-color: #09c;
font: bold 16px "微軟雅黑";
color: #fff;
}
td {
font: 14px "微軟雅黑";
}
tbody tr {
background-color: #f0f0f0;
}
tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//thead標籤中的複選框----全選和全不選
$("#j_cbAll").click(function () {
//直接設定tbody中複選框的選中狀態和當前點選的複選框的選中狀態一致
$("#j_tb").find("input").prop("checked",$(this).prop("checked"));
});
//每個複選框都要註冊點選事件
$("#j_tb").find("input").click(function () {
var ckLength=$("#j_tb").find("input").length;
var checkedLenth=$("#j_tb :checked").length;
$("#j_cbAll").prop("checked",checkedLenth==ckLength);
});
});
</script>
</head>
<body>
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll"/>
</th>
<th>課程名稱</th>
<th>所屬學院</th>
</tr>
</thead>
<tbody id="j_tb">
<tr>
<td>
<input type="checkbox"/>
</td>
<td>JavaScript</td>
<td>前端與移動開發學院</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>css</td>
<td>前端與移動開發學院</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>html</td>
<td>前端與移動開發學院</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>jQuery</td>
<td>前端與移動開發學院</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
設定元素寬高的兩種方式
*數值屬性的設定,一定要注意獲取的屬性值的資料型別。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div{
width: 200px;
height: 100px;
background-color: darkorchid;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
//元素的寬和高,jQuery中封裝了方法
/*
* .width()可以獲取也可以設定元素的寬
* .height()可以獲取也可以設定元素的高
*
*
* */
//把獲取元素計算後的樣式屬性值的相容程式碼:寫兩遍
$(function () {
$("#btn").click(function () {
//點選按鈕,設定div的寬和高為原來的2倍
//.css方法獲取的寬和高實際上是字串型別
//獲取div的寬和高
// var w=$("#dv").css("width");
// var h=$("#dv").css("height");
// //設定div的寬和高
// $("#dv").css("width",(parseInt(w)*2)+"px");
// $("#dv").css("height",(parseInt(h)*2)+"px");
//先獲取
// var w=$("#dv").width();
// var h=$("#dv").height();
// console.log(w);
// $("#dv").css("width",w*2);
// $("#dv").css("height",h*2);
// $("#dv").width(300);
// $("#dv").height(400);
});
});
</script>
</head>
<body>
<input type="button" value="設定元素的寬和高" id="btn" />
<div id="dv"></div>
</body>
</html>
設定元素的位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
*{
margin: 0;
padding: 0;
}
div{
width: 200px;
height: 100px;
background-color: indianred;
position: absolute;
left:100px;
top:200px;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
//點選按鈕,設定div的left和top的值是原來的2倍
$(function () {
$("#btn").click(function () {
//獲取left和top ---獲取的仍然是字串型別
// var l=$("#dv").css("left");
// var t=$("#dv").css("top");
// //console.log(l);
// var left1=parseInt(l)*2;
// var top1=parseInt(t)*2;
// $("#dv").css("left",left1+"px");
// $("#dv").css("left",top1+"px");
//該方法獲取的是一個物件,該物件中有兩個屬性,left和top
//left和top包含left和margin-left和top和margin-top的值
//console.log($("#dv").offset().left);
$("#dv").css("left",$("#dv").offset().left*2);
$("#dv").css("top",$("#dv").offset().top*2);
$("#dv").offset({"left":500,"top":250});
});
});
/*
* 可以設定,也可以獲取
* .width()是元素的寬
* .height()是元素的高
*
* .offset()--->獲取的是物件,可以設定,也可以獲取
* .offset({"left":值,"top":值});設定
*
*
* */
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv"></div>
</body>
</html>
scroll系列:卷取值的獲取
/*
* DOM中的
* scrollLeft:向左捲曲出去的距離的值
* scrollTop:向上捲曲出去的距離的值
* scrollWidth:元素中內容的實際的寬
* scrollHeight:元素中內容的實際的高
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div{
width: 300px;
height: 200px;
border: 1px solid red;
overflow: auto;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
//div滾動上下滾動條的時候,一直獲取他的向上捲曲出去的值
$(function () {
$("#dv").scroll(function () {
console.log($(this).scrollTop()); 其他的值獲取方式類似
});
});
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv">
hello world!
...more...
</div>
</body>
</html>
為元素繫結事件的5中寫法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//為按鈕繫結滑鼠進入,滑鼠離開,點選事件
//第一種寫法
// $("#btn").mouseenter(function () {
// $(this).css("backgroundColor","red");
// });
// $("#btn").mouseleave(function () {
// $(this).css("backgroundColor","green");
// });
// $("#btn").click(function () {
// alert("啊~我被點了");
// });
//第二種寫法:鏈式程式設計
// $("#btn").mouseenter(function () {
// $(this).css("backgroundColor","red");
// }).mouseleave(function () {
// $(this).css("backgroundColor","green");
// }).click(function () {
// alert("啊~我被點了");
// });
//第三種寫法:bind方法繫結事件
// $("#btn").bind("click",function () {
// alert("哦買雷電嘎嘎鬧");
// });
// $("#btn").bind("mouseenter",function () {
// $(this).css("backgroundColor","red");
// });
// $("#btn").bind("mouseleave",function () {
// $(this).css("backgroundColor","green");
// });
//第四種寫法:鏈式程式設計
// $("#btn").bind("click",function () {
// alert("哦買雷電嘎嘎鬧");
// }).bind("mouseenter",function () {
// $(this).css("backgroundColor","red");
// }).bind("mouseleave",function () {
// $(this).css("backgroundColor","green");
// });
//第五種寫法:使用鍵值對的方式繫結事件
// $("#btn").bind({"click":function () {
// alert("哦買雷電嘎嘎鬧");
// },"mouseenter":function () {
// $(this).css("backgroundColor","red");
// },"mouseleave":function () {
// $(this).css("backgroundColor","green");
// }});
});
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn" />
</body>
</html>
為元素繫結多個事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//為按鈕繫結多個相同事件 鏈式程式設計繫結多個事件,可以避免覆蓋
// $("#btn").click(function () {
// console.log("小蘇好猥瑣哦");
// }).click(function () {
// console.log("小蘇好美啊");
// }).click(function () {
// console.log("天冷了,注意身體");
// });
// $("#btn").bind("click",function () {
// console.log("哈哈,我又變帥了");
// }).bind("click",function () {
// console.log("hello world!");
// });
//bind方法繫結多個相同的事件的時候,如果使用的是鍵值對的方式,只能執行最後一個
$("#btn").bind({"click":function () {
console.log("oh my god!");
},"click":function () {
console.log("you jump i jump");
}});
});
//bind方法內部是呼叫的另一個方法繫結的事件
</script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
</body>
</html>
另類的繫結事件:父元素被點選,子元素繫結事件。。。
* 物件.事件名字(事件處理函式);---$("#btn").click(function(){});
* 物件.bind("事件名字",事件處理函式);---$("#btn").bind("click",function(){});
* 父級物件.delegate("子級元素","事件名字",事件處理函式);---->$("#dv").delegate("p","click",function(){});
*
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div{
width: 200px;
height: 100px;
border: 2px solid green;
}
p{
width: 150px;
height: 50px;
border: 1px solid red;
cursor: pointer;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
//點選按鈕為div中的p標籤繫結事件
$(function () {
$("#btn").click(function () {
//為父級元素繫結事件,父級元素代替子級元素繫結事件
//子級元素委託父級繫結事件
//父級元素呼叫方法,為子級元素繫結事件
$("#dv").delegate("p","click",function () {
alert("啊!~,被點了");
});
});
});
</script>
</head>
<body>
<input type="button" value="為div繫結事件" id="btn" />
<div id="dv">
<p>這是p</p>
</div>
</body>
</html>
案例:固定導航欄jQuery實現
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>防騰訊固定導航欄</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.main {
width: 1000px;
margin: 0 auto;
}
/*.top {
height: 171px;
}
.nav {
height: 86px;
}*/
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
//瀏覽器的滾動條上下移動的時候,設定頁面中的nav的div固定在頁面的頂部或者是回到原來的位置
//為瀏覽器註冊滾動的事件
$(window).scroll(function () {
//獲取頁面的向上捲曲出去的距離的值
//如果向上捲曲出去的距離的值大於或者是等於第一個div的高度
if($(this).scrollTop()>=$(".top").height()){
//設定導航欄固定在頁面的頂部
$(".nav").css("position","fixed");
//設定導航欄在頂部的值是0
$(".nav").css("top",0);
//設定.main的div的位置,不是直接跳上去的
$(".main").css("marginTop",$(".nav").height());
}else{
//恢復
$(".nav").css("position","static");
$(".main").css("marginTop",0);
}
});
});
</script>
</head>
<body>
<div class="top">
<img src="images/top.png" />
</div>
<div class="nav">
<img src="images/nav.png" />
</div>
<div class="main">
<img src="images/main.png" />
</div>
</body>
</html>