Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
、jQuery的事件有哪些?
javscript的事件:onClick,onmouseover
jquery的事件:click,mouseover
注意jQuery的事件比javascript的事件少一個on
1)鼠標事件
click:單擊事件
//dbclick:雙擊事件
mouseover:鼠標懸念(移入)
mouseout:鼠標移出
<style>
.abc{
background-color: #aaa;
}
</style>
<script type="text/javascript">
$(function(){
$("#nav li").mouseover(function(){
$(this).addClass("abc");//當鼠標移入li元素時添加樣式
}).mouseout(function(){
//$(this).removeClass() //當鼠標移出時刪除所有樣式
$(this).removeClass("abc") //當鼠標移出時刪除指定樣式
});
});
</script>
<div id="nav">
<ul>
<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>
</div>
2) 鍵盤事件
keydown:鍵盤按下事件
keypress:鍵盤按下并放開時觸發
keydown:鍵盤放開時觸發
<script type="text/javascript">
$(function(){
//按回車鍵自動登錄(不用再點擊登錄按鈕)
$(document).keydown(function(event){
if(event.keyCode==13){
$("#actionForm").submit();
return true;
}
return false;
})
});
</script>
<form id="actionForm" action="../index.html">
登錄名:<input id="txtLoginName" /><br />
密碼:<input type="password" />
<input type="button" value="登錄" />
</form>
3) 表單事件
focus:獲得焦點時觸發
blur:失去焦點
select:文本選中時觸發
<script type="text/javascript">
$(function(){
//文本框獲得焦點時,將當前文本框的內容清空(值等于"請輸入登錄名..")
//文本框失去焦點時,判斷內容是否為"請輸入登錄名.."或是否為空,那么將這個值"請輸入登錄名.."設回到文本框
$("#txtLoginName").focus(function(){
if($(this).val()=='請輸入登錄名...'){
$(this).val('');//清空內容
}
}).blur(function(){
if($(this).val().trim()==''){
$(this).val('請輸入登錄名...');//清空內容
}
});
});
</script>
<form id="actionForm" action="../index.html">
登錄名:<input id="txtLoginName" value="請輸入登錄名..." /><br />
密碼:<input type="password" />
<input type="button" value="登錄" />
</form>
4)其它事件
bind():綁定事件
unbind():移除綁定事件
<script type="text/javascript">
$(function(){
//綁定單個事件
// $("#btn1").bind('click',function(){
// alert("OK");
// });
//綁定多個事件
$("#btn1").bind({
mouseover:function(){
alert("鼠標懸念");
},
mouseout:function(){
alert("鼠標移出");
}
})
//解除綁定事件
$("#btn2").click(function(){
//$("#btn1").unbind("click");//解除綁定的單個事件
$("#btn1").unbind("mouseover mouseout");//解除多個綁定的事件,用空格分隔
//$("#btn1").unbind();//解除所有綁定的事件
});
});
</script>
<input type="button" id="btn1" value="點我" /><br />
<input type="button" id="btn2" value="解除綁定" />
hover():相當于mouseover和mouseout的組合
.abc{
background-color: #aaa;
}
</style>
<script type="text/javascript" src="../js/jquery-1.8.3.js" ></script>
<script type="text/javascript">
$(function(){
// $("#nav li").mouseover(function(){
// $(this).addClass("abc");//當鼠標移入li元素時添加樣式
// }).mouseout(function(){
// //$(this).removeClass() //當鼠標移出時刪除所有樣式
// $(this).removeClass("abc") //當鼠標移出時刪除指定樣式
// });
$("#nav li").hover(
function(){
$(this).addClass("abc");//當鼠標移入li元素時添加樣式
},
function(){
$(this).removeClass("abc") //當鼠標移出時刪除指定樣式
}
);
});
</script>
togger():
a) 鼠標連續點擊
b) 顯示和隱藏
<script type="text/javascript">
$(function(){
//點擊當前頁面時顯示紅綠藍的背景色
$("body").toggle(
function(){
$(this).css("background-color","red");
},
function(){
$(this).css("background-color","green");
},
function(){
$(this).css("background-color","blue");
}
);
});
</script>
</head>
<body>
測試
</body>
節我們學習 jQuery 中的事件的使用,jQuery 是專門為響應 HTML 頁面中的事件而設計的。我們在使用時,需要遵循以下原則:
首先我們要知道什么是事件,頁面對不同訪問者的響應叫做事件,例如點擊某個按鈕,選擇單選框或復選框,滑動鼠標等,這些都可以稱為事件。
在 jQuery 中,大多數 DOM 事件都有一個相應的 jQuery 方法。例如我們前面提到過的點擊事件的對應的方法為 click() 方法。
當我們點擊元素時,會發生 click 點擊事件,這需要用到 click() 方法。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery_俠課島(9xkd.com)</title>
<script src="jquery-3.5.1.min.js"></script>
<script>
$(function(){
$("button").click(function(){
alert("hello, xkd!");
});
});
</script>
</head>
<body>
<div>
<button>點擊按鈕</button>
</div>
</body>
</html>
在瀏覽器中的演示效果:
以瀏覽器裝載文檔為例,在頁面加載完畢后,瀏覽器會通過javaScript為DOM元素添加事件,在常規的javaScript代碼中,通常使用window.onload方法,而在jQuery中,使用的是$(document).ready(function(){})方法,該方法是事件模塊中比較重要的一個函數,可以極大地提高Web應用程序的響應速度。jQuery就是用$(document).ready()代替傳統javaScript的window.onload方法,通過使用該方法,可以在DOM載入就緒時就對其進行操作并執行它所綁定的函數,在使用過程中需要注意$(document).ready()方法和window.onload方法之間的細微區別,區別如下:
$(document).ready()和window.onload有相似的功能,但在執行時機方面是有區別的。window.onload是在網頁中所有的元素(包括元素的所有關聯文件)完全加載到瀏覽器之后才執行,而通過$(document).ready()方法注冊的事件處理程序,在DOM完全就緒時就可以被調用。
舉一個例子,有一個大型的圖庫網站,為網頁中所有圖片添加某些行為,如單擊圖片后隱藏或顯示,如果用window.onload來處理,那么用戶必須等到每一幅圖片都加載完畢才可以進行操作,如果使用$(document).ready()方法來進行設置,只要DOM就緒即可操作,不需要等待所有圖片下載完畢,很顯然,把網頁解析為DOM樹的速度要比把頁面中所有關聯文件加載完畢的速度快的多。
在頁面中可以多次使用$(document).ready()去綁定加載執行事件,綁定事件順序執行。
$(document).ready(function(){ });可以簡寫為$(function(){ });,另外,$(document)也可以簡寫為$(),當$()不帶參數時,默認參數是“document”,因此還可以簡寫為$().ready(function(){ });。
在文檔裝載完成后,如果打算為元素綁定事件來完成某些操作,則可以使用()方法來對匹配元素進行特定事件的綁定,on()方法的調用格式為:
on(events,[selector],[data],fn)
說明如下:
第1個參數是事件類型,類型包括:blur、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、change、select、submit、keydown、keypress、keyup、和error等,當然也可以是自定義名稱。
第2個參數為可選參數,一個選擇器字符串用于過濾器的觸發事件的選擇器元素的后代。如果選擇的< null或省略,當它到達選定的元素,事件總是觸發。
第3個參數為可選參數,作為event.data屬性值傳遞給事件對象的額外數據對象。
第4個參數則是用來綁定的處理函數。
下面通過一個示例來了解on()方法的用法,假設網頁中有一個常見問題解答,單擊“標題”鏈接將顯示內容。
HTML代碼如下:
示例DOM
按照需求,需要完成以下幾個步驟。
根據分析的步驟,可以輕易地寫出如下jQuery代碼:
$(function(){
$("#panel h5.head").on("click",function(){
$(this).next().show();//$(this).next()獲取"內容"元素
});
});
在上面的例子中,單擊“標題“顯示出“內容”;再次單擊“標題”,“內容”并沒有任何反應,現在需要加強效果:第2次單擊“標題”,“內容”隱藏;再次單擊“標題”,“內容”又顯示,兩個動作循環出現,為了實現這個功能,需要經過以下幾個步驟:
為了判斷元素是否顯示,可以使用jQuery中的is()方法來完成,代碼如下:
$(function(){
$("#panel h5.head").on("click",function(){
if($(this).next().is(":visible")){ //如果"內容"顯示
$(this).next().hide();
} else {
$(this).next().show();
}
});
});
通過以上的修改,當反復單擊“標題”鏈接時,“內容”會在隱藏和顯示兩種狀態下切換。
上面的例子中,給元素綁定的事件類型是click,當用戶單擊的時候會觸發綁定的事件,執行事件的代碼,現在把事件類型換成mouseover和mouseout,即當光標滑過的時候就觸發事件,需要進行以下幾步操作:
根據分析的步驟,可以寫出如下代碼:
$(function(){
$("#panel h5.head").on("mouseover",function(){
$(this).next().show();
}).on("mouseout",function(){
$(this).next().hide();
});
});
像click、mouseover和mouseout這類事件,在程序中經常會使用到,jQuery為此也提供了一套簡單的寫法,簡單寫法和on()方法類似,實現的效果也相同,唯一的區別是能夠減少代碼量,簡寫如下:
$(function(){
$(on#panel h5.headon).mouseover(function(){
$(this).next().show();
}).mouseout(function(){
$(this).next().hide();
});
});
jQuery有兩個合成事件——hover()和toggle()方法,類似前面講過的ready()方法,這兩個方法都屬于jQuery自定義的方法。
hover()方法的語法結構為:
hover(enter,leave);
hover()方法用于模擬光標懸停事件,當光標移動到元素上時,會觸發指定的第1個函數(enter);當光標移除這個元素時,會觸發指定的第2個函數(leave)。
將上面的例子改寫成hover()方法,jQuery代碼如下:
$(function(){
$("#panel h5.head").hover(function(){
$(this).next().show();
},function(){
$(this).next().hide();
});
});
toggle()方法的語法結構為:
toggle(fn1,fn2,…fnN);
toggle()方法用于模擬鼠標連續單擊事件,第1次單擊元素,觸發指定的第1個函數,當再次單擊同一元素時,則觸發指定的第2個函數,以此類推,直到最后一個,然后循環。
$(function(){
$("#panel h5.head").toggle(function(){
$(this).next().show();
},function(){
$(this).next().hide();
});
});
toggle()方法在jQuery中還有另外一個作用:切換元素的可見狀態,如果元素是可見的,單擊切換后則為隱藏的,如果元素是隱藏的,單擊切換后則為可見的。
若感覺對您有用,可以關注并轉發,您的關注是對我莫大的支持!
關注并轉發后私信“jQuery基礎材料”獲取線下資料,包括完整基礎資料、chm文檔、示例代碼及其他參考資料。
上一章:jQuery基礎回顧——jQuery中的DOM操作
下一章:jQuery基礎回顧——事件冒泡、移除事件、模擬事件
*請認真填寫需求信息,我們會在24小時內與您取得聯系。