JQ其它事件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>input框事件</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
// //一開始就獲取焦點罢杉,相當于設置了autofocus自動獲取焦點了(HTML5 新增表單控件屬性)
// $('#txt01').focus();
// //文本框獲取焦點的時候(有光標閃爍的時候)
// $('#txt01').focus(function() {
// alert('focus');
// });
// //失去焦點的時候(光標離開的時候)
// $('#txt01').blur(function() {
// alert('blur');
// });
// //輸入框內容發(fā)生變化的時候,失去焦點后觸發(fā)贡歧,可用于注冊時驗證用戶名是否已存在
// $('#txt01').change(function() {
// alert('change');
// });
//松開鍵盤按鍵就觸發(fā)
$('#txt01').keyup(function() {
alert('keyup');
});
})
</script>
</head>
<body>
<input type="text" id="txt01">
</body>
</html>
綁定事件bind:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>綁定事件bind</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
// //只能綁定click事件滩租,不能綁定其他的了
// $('#btn').click(function() {
// /* Act on the event */
// });
//bind方式可綁定多個事件
$('#btn').bind('click mouseover', function() {
alert('hello!');
//取消綁定事件
$(this).unbind('mouseover');
});
})
</script>
</head>
<body>
<input type="button" value="按鈕" id="btn">
</body>
</html>
自定義時間:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定義事件</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
//自定義事件只能用bind方式綁定,第一個參數(shù)是事件的名字利朵,第二個參數(shù)是事件發(fā)生時執(zhí)行的函數(shù)
$('#btn1').bind('hello', function(){
alert('hello');
})
$('#btn1').bind('click', function(){
alert('click');
})
$('#btn2').click(function() {
// trigger即可以觸發(fā)自定義事件律想,也可以觸發(fā)原始的事件
$('#btn1').trigger('hello');
$('#btn1').trigger('click');
});
//不一定點擊按鈕觸發(fā),也可頁面加載時觸發(fā)哗咆,也可在滿足某種if條件時觸發(fā)
// $('#btn1').trigger('hello');
})
</script>
</head>
<body>
<input type="button" value="按鈕" id="btn1">
<input type="button" value="按鈕2" id="btn2">
</body>
</html>
事件冒泡:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件冒泡</title>
<style type="text/css">
.grandfather{
width: 300px;
height: 300px;
background-color: green;
position: relative;
}
.father{
width: 200px;
height: 200px;
background-color: gold;
}
.son{
width: 100px;
height: 100px;
background-color: red;
position: absolute;
left: 0;
top: 400px;
}
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
$('body').click(function() {
alert(4);
});
$('.grandfather').click(function() {
alert(3);
});
$('.father').click(function() {
alert(2);
});
$('.son').click(function(event) {//event代表當前事件
alert(1);
// console.log(event);//顯示很多屬性蜘欲,其中clientX、clientY就是點擊的坐標
// alert("X軸坐標:" + event.clientX);
// //阻止事件冒泡
// event.stopPropagation();
//合并阻止操作:把阻止冒泡和阻止默認行為合并
return false;
});
//阻止右鍵菜單
$(document).contextmenu(function(event){
// //阻止默認行為(原來右鍵能彈出菜單晌柬,阻止后無法彈出)
// event.preventDefault();
//合并阻止
return false;
})
})
</script>
</head>
<body>
<div class="grandfather">
<div class="father">
<div class="son"></div>
</div>
</div>
</body>
</html>
彈框 阻止冒泡:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>定時器彈框</title>
<style type="text/css">
.pop_con{
display: none;/*默認不顯示姥份,用定時器顯示*/
}
.pop{
width: 400px;
height: 300px;
background-color: #fff;
border: 1px solid #000;
position: fixed;/*使用固定定位*/
left: 50%;/*左上角位于頁面中心*/
top: 50%;
margin-left: -200px;/*讓div向左偏移半個寬度、向上偏移半個高度年碘,使div位于頁面中心*/
margin-top: -150px;
z-index: 9999;/*彈窗在最前面*/
}
/*遮罩樣式*/
.mask{
position: fixed;
width: 100%;
height: 100%;
background-color: #000;
left: 0;
top: 0;
/*設置透明度30%澈歉,兼容IE6、7屿衅、8*/
opacity: 0.3;
filter: alpha(opacity=30);
z-index: 9990;/*遮罩在彈窗后面*/
}
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn').click(function() {
$('#pop').show();
return false;
});
$('#shutoff').click(function() {
$('#pop').hide();
});
//點彈框以外的地方埃难,也能讓彈框消失
$(document).click(function(){
// setTimeout(function(){
// $('#pop').hide();
// },2000);
$('#pop').hide();
});
$('.pop').click(function() {
return false;
});
//阻止默認行為(原來超鏈接可跳轉到百度,阻止后無法跳轉)
$('#link1').click(function() {
return false;
});
})
</script>
</head>
<body>
<h1>首頁標題</h1>
<p>頁面內容</p>
<a id="link1">百度網(wǎng)</a>
<input type="button" name="" value="彈出" id="btn">
<div class="pop_con" id="pop">
<div class="pop">
<h3>提示信息!</h3>
<a href="#" id="shutoff">關閉</a>
<input type="text" name="">
</div>
<!-- 遮罩層 -->
<div class="mask"></div>
</div>
</body>
</html>
事件委托:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件委托</title>
<style type="text/css">
.list{
list-style: none;
}
.list li{
height: 30px;
background-color: green;
margin-bottom: 10px;
color: #fff;
}
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
/*
給每個li綁定事件涡尘,一共綁定了8次忍弛,性能不高
$('.list li').click(function() {
alert($(this).html());
});
*/
/*
事件委托:方法delegate,只綁定一次事件考抄,冒泡觸發(fā)
參數(shù):
selector選擇器:寫入ul下面的所有要發(fā)生事件的元素细疚,多個元素用空格隔開,例如‘li a span’
eventType事件
function要執(zhí)行的操作
$('.list').delegate('li', 'click', function() {
//$(this)指發(fā)生事件的子集川梅,即每個li
alert($(this).html());
//全部取消委托
$('.list').undelegate();
});
})
</script>
</head>
<body>
<ul class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</body>
</html>
節(jié)點操作:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>節(jié)點操作</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
var $span = $('<span>span元素</span>');
var $p = $('<p>p段落元素</p>');
var $h = $('<h1>頁面標題</h1>');
/*插入子元素*/
//div中插入span和p(末尾追加)
// $('#div1').append($span);
// $('#div1').append($p);
// 把span和p插入div中
$span.appendTo('#div1');
$p.appendTo('#div1');
//把子元素插入到父元素(前面追加)
// $('#div1').prepend($span);
// $('#div1').prepend($p);
// $span.prependTo('#div1');
// $p.prependTo('#div1');
//在div前邊插入兄弟h1標題
// $('#div1').before($h);
$h.insertBefore('#div1');
//在后邊插入兄弟元素
//after()
//insertAfter()
//刪除p標簽
$p.remove();
})
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
ajax:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$.ajax({
url: 'data.json',//請求的服務器路徑疯兼,實際開發(fā)中寫文檔接口的路徑
type: 'get',//分get/post請求,涉及隱私或安全性要求較高的用post贫途、安全要求不高及數(shù)據(jù)量較小的用get
dataType: 'json',//要讀取什么格式的數(shù)據(jù)吧彪,還可以是xml script html upload等
// data:{page:1}//請求時要攜帶的參數(shù)
})
.done(function(data){//成功的時候會執(zhí)行的函數(shù),參數(shù)data是從后臺接收到的數(shù)據(jù)丢早,這里是json格式的字符串
alert(data.name);
console.log(data);
})
.fail(function(){//失敗的時候會執(zhí)行的函數(shù)
console.log("error");
})
/*
.fail(function(XMLHttpRequest, textStatus, errorThrown) {//失斠搪恪(帶參數(shù))
console.log("error");
// 狀態(tài)碼
? ? ? ? ? ? console.log(XMLHttpRequest.status);
? ? ? ? ? ? // 狀態(tài)
? ? ? ? ? ? console.log(XMLHttpRequest.readyState);
? ? ? ? ? ? // 錯誤信息?
? ? ? ? ? ? console.log(textStatus);
})
.always(function(){//不論成功與否都會執(zhí)行
console.log("always");
})
*/;
</script>
</head>
<body>
</body>
</html>
json:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jsonp</title>
<style type="text/css">
</style>
<!-- <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> -->
<script type="text/javascript">
// alert($);//function(a,b){return new n.fn.init(a,b)}
/*
jsonp可以跨域請求數(shù)據(jù)的原理:
主要是利用了script標簽可以跨域鏈接資源的特性
*/
function aa(dat){
alert(dat.name);
}
</script>
<script type="text/javascript" src="js/data.js"></script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery-jsonp</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$.ajax({
url: 'http://localhost:8080/1803/js/data.js',//跨域請求的地址,也可用相對路徑js/data.js
type: 'get',
dataType: 'jsonp',//使用jsonp跨域請求
jsonpCallback:'aa'
})
.done(function(data) {
alert(data.name);
})
.fail(function() {
console.log("error");
});
</script>
</head>
<body>
</body>
</html>
json 公開接口:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jsonp公開接口</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
//360搜索的公開接口
//https://sug.so.#/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=s
$(function(){
$('#txt01').keyup(function() {
var val = $(this).val();
$.ajax({
url: 'https://sug.so.#/suggest?encodein=utf-8&encodeout=utf-8&format=json&fields=word',//請求360搜索的公開接口
type: 'get',
dataType: 'jsonp',//跨域請求
data: {word: val},//攜帶參數(shù)
jsonpCallback:'suggest_so'//指定360提供的jsonp的回調函數(shù)
})
.done(function(data) {
console.log(data);
// alert(data.result.length);//10條數(shù)據(jù)
$('.list').empty();//先清空列表
//模擬搜索聯(lián)想香拉,循環(huán)插入新列表
/*原生JS循環(huán)
for(var i=0; i<data.result.length; i++){
var $li = $('<li>'+data.result[i].word+'</li>');
$li.appendTo('.list');
}*/
// JQ循環(huán)
$(data.result).each(function (index, item) {
var $li = $('<li>'+item.word+'</li>');
? ? ? ? ? ? $li.appendTo('.list');
? ? ? ? ? })
})
/*.fail(function(XMLHttpRequest, textStatus, errorThrown) {//失敗
console.log("error");
// 狀態(tài)碼
? ? ? ? ? ? console.log(XMLHttpRequest.status);
? ? ? ? ? ? // 狀態(tài)
? ? ? ? ? ? console.log(XMLHttpRequest.readyState);
? ? ? ? ? ? // 錯誤信息?
? ? ? ? ? ? console.log(textStatus);
});*/
.fail(function(jqXHR, textStatus, errorThrown) {//失敗
console.log("error");
/*彈出jqXHR對象的信息*/
? ? ? ? ? ? console.log(jqXHR.responseText);
? ? ? ? ? ? console.log(jqXHR.status);
? ? ? ? ? ? console.log(jqXHR.readyState);
? ? ? ? ? ? console.log(jqXHR.statusText);
? ? ? ? ? ? /*彈出其他兩個參數(shù)的信息*/
? ? ? ? ? ? console.log(textStatus);
? ? ? ? ? ? console.log(errorThrown);
});
});
})
</script>
</head>
<body>
<input type="text" id="txt01">
<ul class="list"></ul>
</body>
</html>
正則:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>正則</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
//校驗QQ
/*
//JS的方式比較麻煩
function checkQQ(qq){
var flag = true;//默認符合要求
if(qq.length>=5 && qq.length<=15){
if(qq.indexOf("0")){
if(isNaN(qq)){
flag = false;//不是數(shù)字
}
}else{
flag = false;//以0開頭啦扬,不符合QQ標準
}
}else{
flag = false;//長度不符合
}
return flag;
}
console.log(checkQQ("012345"));
console.log(checkQQ("a12b345"));
console.log(checkQQ("123456"));//true
console.log(checkQQ("1234567890987654321"));
*/
//正則匹配簡單高效
var regex = /^[1-9]\d{4,14}$/;
console.log(regex.test("012345"));
console.log(regex.test("a12b345"));
console.log(regex.test("123456"));//true
console.log(regex.test("1234567890987654321"));
</script>
</head>
<body>
</body>
</html>
正則表達式:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>正則表達式</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
//匹配字母a,i表示忽略大小寫凫碌,g表示全文檢索
var re = new RegExp('a', 'ig');
var re2 = /a/ig;
var str = 'abc';
//調用test方法進行匹配扑毡,匹配成功返回true,否則返回false
// alert(re2.test(str));//true
//匹配字母ac盛险,忽略大小寫瞄摊,全文檢索
re2 = /ac/ig;
// alert(re2.test(str));//false
//匹配數(shù)字
var re3 = /\d/;
var str3 = '123';
// alert(re3.test(str3));//true
str3 = '123ab1';
// alert(re3.test(str3));//true
//匹配數(shù)字,全文檢索
re3 = /\d/g;
// alert(re3.test(str3));//true
//匹配數(shù)字開頭并結尾
re3 = /^\d$/;
// alert(re3.test(str3));//false
//匹配從開頭到結尾有一個或多個數(shù)字
re3 = /^\d+$/;
// alert(re3.test(str3));//false
//匹配數(shù)字苦掘、字母换帜、下劃線
var re4 = /\w/;
var str4 = '@asd';
// alert(re4.test(str4));//true
//匹配數(shù)字、字母鹤啡、下劃線開頭
re4 = /^\w/;
// alert(re4.test(str4));//false
str4 = 'as&d';
// alert(re4.test(str4));//true
//匹配從開頭到結尾有一個或多個數(shù)字惯驼、字母、下劃線
re4 = /^\w+$/;
// alert(re4.test(str4));//false
var str5 = '123adfas894fasdfas15122dfad85';
var re5 = /\d+/g;//全文檢索一個或多個數(shù)字
var arr = str5.match(re5);
// alert(arr);//123,894,15122,85
var re6 = /d/;//匹配字母d
// alert(str5.search(re6));//4//search相當于indexOf()函數(shù)
//replace函數(shù)用于替換
var str6 = str5.replace(re5, '*');
// alert(str6);//*adfas*fasdfas*dfad*
//正則表達式的替換功能
var s = "Once111a22wolf,3always4a5wolf!";
var regex = /\d+/g;
var s2 = s.replace(regex, " ");
// console.log(s2);
/*疊詞*/
//快快樂樂递瑰、高高興興
regex = /(.)\1(.)\2/;//()表示分組祟牲,.表示任意字符,匹配第一組任意字符再出現(xiàn)一次抖部、第二組任意字符再出現(xiàn)一次
// console.log(regex.test("快快樂樂"));//true
// console.log(regex.test("快樂樂樂"));
// console.log(regex.test("高高興興"));//true
// console.log(regex.test("快樂快樂"));
//快樂快樂说贝、高興高興
regex = /(..)\1/;//匹配兩個任意字符再出現(xiàn)一次
// console.log(regex.test("快樂快樂"));//true
// console.log(regex.test("高興高興"));//true
// console.log(regex.test("快快快快"));//true
// console.log(regex.test("快快樂樂"));
//疊詞切割
// s = 'sdqqfgkkkhjppppkl';
// regex = /(.)\1+/;
// var arr = s.split(regex);
// console.log(arr);//由于()中的是子表達式,會導致保留一個疊詞字母慎颗,不符合要求
s = 'sdqqfgkkkhjppppkl';
regex = /(.)\1+/g;//匹配疊詞乡恕,即多個重復的字母
var s2 = s.replace(regex, " ");//將疊詞替換為空格
var arr = s2.split(' ');//再按照空格進行切割
// console.log(arr);//返回["sd","fg","hj","kl"]言询,符合要求
//字符串替換
var s = "我我....我...我.要...要要...要學....學學..學.編..編編.編.程.程.程..程";
var s2 = s.replace(/\.+/g, "");//刪除所有的點
// console.log(s2);
var s3 = s2.replace(/(.)\1+/g, "$1");//全文檢索疊詞,替換為單個字符傲宜,例如多個“我”替換成一個“我”
// console.log(s3);
//提取手機號
//regex = /^1[3578]\d{9}$/;手機號的正則运杭,只能匹配17688888888
var s = '我的手機號碼是17688888888,曾經(jīng)用過13187654321蛋哭,還用過13512345678';
var regex = /1[3578]\d{9}/g;//第一位是1县习,第二位是3578中的一個,后面9位是任意數(shù)字谆趾,并全文檢索
var arr = s.match(regex);//match方法返回匹配成功的數(shù)組
console.log(arr);//["17688888888","13187654321","13512345678"]
</script>
</head>
<body>
</body>
</html>