前端筆記知識點整合之jQuery(下)事件&節點操作&凈位置&拖拽&頁面捲動值&遍歷JSON

来源:https://www.cnblogs.com/rope/archive/2019/04/02/10644888.html
-Advertisement-
Play Games

1.1 JavaScript事件 JavaScript事件使用示例: 1.2 jQuery事件 jQuery事件使用示例: 1.3 on()事件方法 定義和用法 on() 方法在被選元素及子元素上添加一個或多個事件處理程式。 自 jQuery 版本 1.7 起,on() 方法是 bind()、liv ...


一、監聽事件大全

1.1 JavaScript事件

onblur      元素失去焦點
onchange    用戶改變域的內容 
onclick     滑鼠點擊某個對象 
ondblclick  滑鼠雙擊某個對象 
onfocus     元素獲得焦點
onkeydown   某個鍵盤的鍵被按下  
onkeypress  某個鍵盤的鍵被按下或按住  
onkeyup     某個鍵盤的鍵被鬆開  
onload      某個頁面或圖像被完成載入
onmousedown 某個滑鼠按鍵被按下
onmousemove 滑鼠被移動  
onmouseout  滑鼠從某元素移開  
onmouseover 滑鼠被移到某元素之上 
onmouseup   某個滑鼠按鍵被鬆開 
onreset     重置按鈕被點擊
onresize    視窗或框架被調整尺寸 
onselect    文本被選定 
onsubmit    提交按鈕被點擊
onunload    用戶退出頁面
onscroll    元素滾動時執行

 

JavaScript事件使用示例:

oDiv.onclick = function(){

}

 


1.2 jQuery事件

blur()       觸發、或將函數綁定到指定元素的 blur 事件
change()     觸發、或將函數綁定到指定元素的 change 事件
click()      觸發、或將函數綁定到指定元素的 click 事件
dblclick()   觸發、或將函數綁定到指定元素的 double click 事件
error()      觸發、或將函數綁定到指定元素的 error 事件
focus()      觸發、或將函數綁定到指定元素的 focus 事件
keydown()    觸發、或將函數綁定到指定元素的 key down 事件
keypress()   觸發、或將函數綁定到指定元素的 key press 事件
keyup()      觸發、或將函數綁定到指定元素的 key up 事件
load()       觸發、或將函數綁定到指定元素的 load 事件
mousedown()  觸發、或將函數綁定到指定元素的 mouse down 事件
mouseenter() 觸發、或將函數綁定到指定元素的 mouse enter 事件
mouseleave() 觸發、或將函數綁定到指定元素的 mouse leave 事件
mousemove()  觸發、或將函數綁定到指定元素的 mouse move 事件
mouseout()   觸發、或將函數綁定到指定元素的 mouse out 事件
mouseover()  觸發、或將函數綁定到指定元素的 mouse over 事件
mouseup()    觸發、或將函數綁定到指定元素的 mouse up 事件
ready()      文檔就緒事件(當 HTML 文檔就緒可用時)
resize()     觸發、或將函數綁定到指定元素的 resize 事件
scroll()     觸發、或將函數綁定到指定元素的 scroll 事件
select()     觸發、或將函數綁定到指定元素的 select 事件
submit()     觸發、或將函數綁定到指定元素的 submit 事件
toggle()     綁定兩個或多個事件處理器函數,當發生輪流的 click 事件時執行。
unload()     觸發、或將函數綁定到指定元素的 unload 事件

 

jQuery事件使用示例:

$(‘div’).click(function(){

});

 


1.3 on()事件方法

定義和用法

on() 方法在被選元素及子元素上添加一個或多個事件處理程式。

jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。該方法給 API 帶來很多便利,我們推薦使用該方法,它簡化了 jQuery 代碼庫。

註意:使用 on() 方法添加的事件處理程式適用於當前及未來的元素(比如由腳本創建的新元素)。

提示:如需移除事件處理程式,請使用 off() 方法。

提示:如需添加只運行一次的事件然後移除,請使用 one() 方法。

 

語法:

$(selector).on(event,childSelector,data,function{

});

 

 

 添加多個事件處理函數:

$('p').on('click mouseenter mouseleave',function(){
   
});

 

off()方法移除事件

$('p').on('click mouseenter mouseleave',function(){
   $(this).off('mouseleave click'); //移除mouseleave和click事件
});

 

使用map參數添加多個事件處理函數

$('p').on({
   click:function(){ $(this).css('background','red'); },
   mouseenter:function(){ $(this).css('background','green');},
   mouseleave:function(){ $(this).css('background','blue'); }
});

 

向未來元素添加事件(通過JS節點方法添加的新元素預設沒有事件,所以要通過以下方法綁定事件,普通事件方法綁定不上)

$('div').on('click','p',function(){
        alert(1);
})

 

二、jQuery設置和獲取內容方法

3個使用的DOM操作的方法

 text()   設置或返回所選的文本內容

 html()   設置或返回所選的標簽內容(包括HTML標簽)

 val()    設置返回表單的value

 


三、jQuery尺寸

jQuery提供多個處理尺寸的重要方法:

以下方法返回的值都是number類型

width() 方法設置或返回元素的寬度(不包括內邊距、邊框或外邊距)。
height() 方法設置或返回元素的高度(不包括內邊距、邊框或外邊距)。
innerWidth() 方法返回元素的寬度(包括內邊距)。
innerHeight() 方法返回元素的高度(包括內邊距)。
outerWidth() 方法返回元素的寬度(包括內邊距和邊框)。
outerHeight() 方法返回元素的高度(包括內邊距和邊框)。
outerWidth(true) 方法返回元素的寬度(包括內邊距、邊框、外邊距)。
outerHeight(true) 方法返回元素的高度(包括內邊距、邊框、外邊距)。

 

還可以獲取HTML文檔和瀏覽器視窗的寬高:

$(window).width()      //獲取當前瀏覽器視窗的寬度
$(window).height()     //獲取當前瀏覽器視窗的高度
$(document).width()    //獲取HTML文檔(body)的寬度
$(document).height()   //獲取HTML文檔(body)的高度

四、jQuery節點操作

4.1添加節點

【添加內部子節點方法】:內部節點就是兒子節點

append()    在被選元素內部的結尾插入內容
appendTo()  將指定內容插入到被選標簽內部的結尾
prepend()   在被選元素內部的開頭插入內容
prependTo() 將指定內容插入到被選標簽內部的開頭
//添加在結尾的
$('ul').append('<li>蘋果</li>'); //在ul標簽內部的結尾插入li內容
$('ul').append(function(){return '<li>蘋果-函數的</li>'}); //功能同上
$('<li>蘋果222</li>').appendTo('ul'); //將指定li內容添加到ul標簽內部的結尾

//添加在開頭的
$('ul').prepend('<li>蘋果</li>'); //在ul標簽內部的開頭插入li內容
$('ul').prepend(function(){return '<li>蘋果-函數的</li>'}); //功能同上
$('<li>蘋果222</li>').prependTo('ul'); //將指定li內容添加到ul標簽內部的開頭

 

【添加同級節點方法】:同級就是兄弟關係

after()            在被選元素同級後面插入內容
insertAfter()     將指定內容添加到被選標簽同級後面
before()           在被選元素同級前面插入內容
insertBefore()    將指定內容添加到被選標簽同級前面

註意:以上方法作用相同。差異在於語法:內容和選擇器的位置。

 

添加在同級的後面
$('ul').after('<p>以上水果都好吃</p>'); //在ul標簽同級的後面插入p標簽內容
$('ul').after(function(){return '<p>以上水果都好吃</p>'}); //功能同上
$('<p>以上水果都好吃</p>').insertAfter('ul'); //將指定p標簽內容添加到ul標簽同級的後面

添加在同級的開頭
$('ul').before('<p>以下水果都不好吃</p>'); //在ul標簽同級的開頭插入p標簽內容
$('ul').before(function(){return '<p>以下水果都不好吃</p>'}); //功能同上
$('<p>以下水果都不好吃</p>').insertBefore('ul'); //將指定p標簽內容添加到ul標簽同級的開頭

4.2刪除節點

 remove()  刪除被選元素(及其子元素)

 empty()   從被選元素中刪除子元素

$('ul li').eq(1).empty();  //刪除li的內容
var $li = $('ul li').eq(2).remove(); //刪除整個li(包括子節點)
$('ul').append($li); //將刪除的li添加在ul內部的後面

4.3克隆節點

 clone(true) 方法生成被選元素的副本,包含子節點、文本和屬性。

參數:可選。布爾值。規定是否複製元素的所有事件處理。預設false

$('button').click(function(){
   var $p = $('p').clone(true);  //克隆p標簽,true表示把子元素和事件也一起克隆
   $('ul').after($p);  //將克隆的p標簽插入到ul後面
});

4.4替換節點

 replaceWith()  將指定的內容替換被選元素

 replaceAll()   

 

 $(selector).replaceWith(content)

 $(content).replaceAll(selector)

註意:replaceWith() 能夠使用函數進行替換,replaceAll則不能。

$('p').replaceWith('<p>你好,請問下麵水果你喜歡嗎?</p>');
$('p').replaceWith(function(){return '<p>你好,請問下麵水果你喜歡嗎?</p>'});
$('<p>你好,請問下麵水果你喜歡嗎?</p>').replaceAll('p');

4.5包裹節點

 wrap()       把匹配的元素用指定的內容或元素包裹起來。

 wrapAll()   把所有匹配的元素用指定的內容或元素包裹起來。

 wrapinner() 將每一個匹配的元素的子內容用指定的內容或元素包裹起來。

 $('button').click(function(){

    $('span').wrap('<div></div>');     //div標簽分別包裹每個span標簽

    $('span').wrapAll('<div></div>');  //div標簽一起包裹所有span標簽

    $('span').wrapInner('<b></b>');      //span標簽內部用b標簽包裹內容

 });


 

五、jQuery凈位置

 $('.xiaoming').offset().top

 $('.xiaoming').offset().top


六、jQuery拖拽

需要使用jQuery插件,有個jQuery官方插件,叫做jQueryUI,負責實現元素的被拖拽、被拖放、改變尺寸、可圈選、可排序。

所謂的插件,就是增強jQuery功能,給jQuery添加一些必須的功能,先引用jQuery,然後引用插件。

官方:http://jqueryui.com/

<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript">
     $('img').draggable();
</script>

 

JSON來配置拖拽:

$('img').draggable({
   //限制元素的移動區域
   'containment':'.box',
   //限制軸方法
   //'axis':'y',
   //限制咯噔
   'grid':[50,100]
});

 

如果在拖拽的時候,要使用坐標,此時要添加drag屬性,值是一個函數,這個函數有兩個參數,第一個參數:event沒用,第二個參數是ui參數,有一個屬性ui.position,這個屬性又有兩個值lefttop值:

$('img').draggable({
   //限制元素的移動區域
   'containment':'.box',
   //限制軸方法
   //'axis':'y',
   //限制咯噔
   //'grid':[50,100],
   'drag':function(event,ui){
       var x = ui.position.left;
       var y = ui.position.top;
       $('h1').html('當前位置:' + x +'-' + y);
   }
});

七、jQuery滑鼠滾輪事件

jQuery天生不能監聽滾動事件,需要用插件,jQuery.mousewheel.js

下載地址:http://plugins.jquery.com/mousewheel/

下載完畢後,就可以用mousewheel()事件來監聽滾輪了。

$('.news').mousewheel(function(event,direction){
   //direction  滑鼠滾輪下滾 -1
   //direction  滑鼠滾輪上滾 1
   console.log(direction);
});

八、頁面捲動值

jQuery中屏蔽了一切瀏覽器相容性問題,並且把所有屬性和方法都換成了window對象的屬性和方法,不用documentbody了。

 $(window).scrollTop(); //獲取頁面捲動的值

 $(window).scroll(function(){});  //頁面捲動事件

 $(window).scroll(function(){

    //滾動條滾動執行的事件

    console.log($(window).scrollTop()); //頁面滾動了多少

 });

 

這個是固定語法,是htmlbody元素進行動畫,不是window對象,改變的是固定屬性'scrollTop屬性

 $('button').click(function(){

    $('html,body').animate({'scrollTop':3000},1000,function(){

        console.log($(window).scrollTop()); //獲取頁面滾動了多少

    });

 });

 

 

原生JS中,如果想讓頁面捲動:

document.getElementById('btn').onclick = function(){
   document.documentElement.scrollTop = document.body.scrollTop = 3000;
}

九、jQuery遍歷JSON方法

$.each(city,function(key,value){
   console.log(key,value)
});
$.each(JSON對象,function(key,value){
   console.log(key,value)
});

key就是JSON的屬性名,valueJSON的屬性值


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JS初學者筆記,若有錯誤及不足,請及時幫忙指出,避免誤導自身以及其它初學者。謝謝! ...
  • 今天學習了JavaScript基礎知識。 JavaScript是什麼? js是一種運行在客戶端的腳本語言。它不需要編譯,並且是逐行解析執行的一種編程語言。 JavaScript的作用 js最初用於表單當中,但現在的用途十分廣泛。例如:網頁特效、服務端開發、桌面程式、甚至於游戲開發等等。 JavaSc ...
  • CSS的簡單使用方法 選擇器介紹 常用樣式總結 盒子模型介紹 相對定位、絕對定位和固定定位介紹 ...
  • 示例代碼托管在: "http://www.github.com/dashnowords/blogs" 博客園地址: "《大史住在大前端》原創博文目錄" 華為雲社區地址: "【你要的前端打怪升級指南】" [TOC] 一. 任務說明 使用原生 繪製K線圖。(截圖以及數據來自於百度Echarts官方示例庫 ...
  • 學習web的第六天 p{ font-size:18px; /*文本尺寸*/ font-family:"隸書"; /*文本字體*/ font-weight:bold; /*文本加粗 bold 加粗 bolder 更粗*/ color:red; /*文本顏色*/ text-align:center; / ...
  • 一、JavaScript介紹 1、JavaScript:輕量級的客戶端腳本語音 2、目前js已經不僅僅是客戶語音,基於NODE可以做伺服器端程式,所以Javascript是全棧編程語音 3、js及部分組成 ECMAScript (ES):js的核心語法 DOM:docment object mode ...
  • js控制html頁面顯示圖片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js" type="text/javascript"></script> <script src="showImage.js" ...
  • js實現把圖片用瀑布流顯示,只需要“jquery-1.11.2.min.js”。 js: //20180315 //瀑布流顯示圖片 var WaterfallImg = { option: { maxWidth: 850,//每一行固定的總的寬度 ifBeyond: 1,//載入到最後一張圖超出範圍 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...