Web前端基礎——jQuery(三)

来源:http://www.cnblogs.com/1693977889zz/archive/2017/09/28/7604658.html
-Advertisement-
Play Games

本文主要從以下幾方面介紹jQuery應用中的內容: 1 jQuery 節點遍歷2 jQuery 中的過濾器3 jQuery 屬性操作4 jQuery Dom節點操作5 幾個jQuery例子6 jQuery 中的事件7 jQuery 中的動態效果 一、 jQuery 節點遍歷 == next() // ...


本文主要從以下幾方面介紹jQuery應用中的內容:

1 jQuery 節點遍歷
2 jQuery 中的過濾器
3 jQuery 屬性操作
4 jQuery Dom節點操作
5 幾個jQuery例子
6 jQuery 中的事件
7 jQuery 中的動態效果

一、 jQuery 節點遍歷

== next()   //用於獲取節點之後的第一個同輩元素 註意,next() 中可以加過濾器 例如 next("div")

== nextAll()  //獲取節點之後的所有同輩元素(註意: 是節點之後,這一點是和siblings不同的)

<html>
     <head>
      <script type="text/javascript" src="js\jquery-1.4.4.js"></script>
      <script type="text/javascript">
       $(function(){
        $("#ulAAAA li").click(function(){
         $(this).css("background","yellow");
         $(this).next().css("background","pink");
        });
       });
      </script>
     </head>
     <body>
      <form>
            <table id="table1" width="80%" border="1" cellspacing=0>
            <tr><td>姓名</td><td>年齡</td><td>職業</td><td>愛好</td></tr>
            <tr style="display:none"><td>楊帆</td><td>38</td><td>運營</td><td>唱歌(這一行不可見)</td></tr>
            <tr><td>王小花</td><td>23</td><td>設計師</td><td>繪畫</td></tr>
            <tr><td>張明明</td><td>34</td><td>產品經理</td><td>書法</td></tr>
            <tr><td>趙志明</td><td>21</td><td>大學生</td><td>電腦</td></tr>
            <tr><td>馬大利</td><td>46</td><td>董事長</td><td>旅游</td></tr>
            </table>
      </form>
      <ul id="ulAAAA">
       <li>劉備</li>
       <li>關羽</li>
       <li>張飛</li>
       <li>諸葛</li>
       <li>孫權</li>
       <li>曹操</li>
       </ul>
     </body>
</html>

==siblings()  //獲取所有的同輩元素  (可以不是同類的,只要是同輩就行) 註意它也可以傳參 例如 siblings(li)

//表格的被點擊行高亮 : 
("#table1 tr").click(function(){
   $(this).css("background","pink");
   $(this).siblings().css("background","white");
});
//用鏈式風格寫:  
//本例為用滑鼠滑過的時候,加亮滑過的表格
$("#table1 tr").mouseover(function(){
$(this).css("background","springgreen").siblings().css("background","white");
     });
//星級評分的例子     
     $(function(){
     $("#table2 td").html("<img src='star.jpg' />");
     $("#table2 td").mouseover(function(){
     $("#table2 td").html("<img src='star2.jpg' />" );
     $(this).nextAll().html("<img src='star.jpg' />" );
    });
});

二、jQuery 中的過濾器

$("#table1 tr:eq(3)").css("background","green"); //將table1中第四行置成綠色 這是前面用的
$("#table1 tr").eq(2).css("background","red");  //這個用的是過濾

 註意: 過濾與上面的不同之處在於,過濾,是對已選出來的元素,再進行過濾

例子:

//第一行加大,變粗體
$("#tableScore tr:first").css("font-size","35").css("font-weight","bold");
//第二,三,四行變紅
$("#tableScore tr:gt(0):lt(3)").css("color","red") //註意,它是從前一個gt(0)選擇後的集合中再過濾
//最後一行背景變綠色
$("#tableScore tr:last").css("color","green")
//改變最後一行,最後一個單元格的文字
$("#tableScore tr td:last").html("打狼了");
//隔行變色
$("#tableScore tr:gt(0):even").css("background","pink"); //註意,隔行變色,要把第一行刨出去,所以用了 gt(0)
//$("#table1 tr:gt(0):even").css("background","pink").next().css("background","silver") 這樣也行, next() 取的是該奇數行下麵的一行

三、jQuery 屬性操作

在幫助文檔的屬性標簽下,有三大類   屬性  CSS  HTML代碼,文本/值

== 屬性

--attr(key,value)  //為所有匹配的元素設置一個屬性值

<img />     <img />
$("img").attr("src","star2.jpg").attr("title","這是動態加上的屬性");

--attr(key)          

alert($("img").attr('src'));             

alert($("img").attr('dog')); //可以取自己寫上去的屬性值

--attr(properties)  // 將一個“名/值”形式的對象設置為所有匹配元素的屬性(即可同時設置多個屬性)

$("img").attr({ src: "test.jpg", alt: "Test Image" });

--removeAttr //移除屬性

$("img").removeAttr("src");

== CSS

--addClass(class)   //為每個匹配的元素添加指定的css類名,註意,它會進行疊加

//例子,點擊一個按紐,給一個<p>加上樣式
.waring{
    color: red;
}
   <p> dog</p>
     $("button").click(function(){
     $("p").addClass("waring");
});
//  例子,處理文本框的得到焦點和失去焦點事件
$(function(){
$("#userName").focus(function(){
$("#lblMsg").removeClass("ok").addClass("info");
}).blur(function(){
$("#lblMsg").removeClass("info").addClass("ok");
    });
});
// 上例也可以這樣寫
$(function(){
$("#userName").focus(function(){
$("#lblMsg").attr("class","info");   //這裡的class 也可以寫成 className
                              }).blur(function(){
$("#lblMsg").attr("class","error");
                              });
    });        
});

--toggleClass(class) //如果存在(不存在)就刪除(添加)一個類

--removeClass([class]) // 刪除css

$("p").removeClass("waring");

 == 文本/值

--html() //取得第一個匹配元素的html內容

--html(val) //設置每一個匹配元素的html內容

--text() //略            

--text(val) //略

--val() //獲得第一個匹配元素的當前值 

註意:在 jQuery 1.2 中,可以返回任意元素的值了。包括select。如果多選,將返回一個數組,其包含所選的值。

$(function(){
$("button").click(function(){
$("p").empty();
$("p").append(
  "單選的值:"+$("#country").val() +"<br>"+ "多選的值" +$("#badMan").val().join('-')
   );
});
 });
<select id="country">
  <option>中國</option>
  <option selected>德國</option>
  <option>馬來西亞</option>
</select>
                                        
<select id="badMan" multiple="multiple">
  <option selected="selected">安倍晉三</option>
  <option>秦檜</option>
  <option selected="selected">奧八馬</option>
</select>
<p>
.......
</
p>

-- val(array)  // checkbox,select,radio等都能使用為之賦值

<select id="country">
   <option>中國</option>
   <option>德國</option>
   <option>馬來西亞</option>
</select>
                                
   <hr>
                                    
<select id="badMan" multiple="multiple">
   <option selected="selected">安倍晉三</option>
   <option>秦檜</option>
   <option >奧八馬</option>
</select>
                                    
<hr>
  <input type="checkbox" value="西瓜"/> check1
  <input type="checkbox" value="魚"/> check2
  <input type="radio" value="水蜜桃"/> radio1
  <input type="radio" value="蝦"/> radio2
                                    
<button>開選</button>
                            
$("button").click(function(){
$("#country").val("馬來西亞");
$("#badMan").val(["奧八馬", "秦檜"]); //給能多選的下拉框同時選兩個值
$("input").val(["魚", "蝦"]);
});

四、jQuery Dom節點操作

在幫助文檔的 文檔處理 項下,有四大類 內部插入,外部插入,包裹,替換,刪除,複製動態創建Dom結點,使用 $(html字元串)來創建Dom結點,並且返回一個jQuery對象,然後調用append等方法,將新創建的節點添加到Dom中。

//例:
$("#divNewNode").append("<a href='http://www.sin.com'>新浪</a>"); // 這個沒有使用$強轉也行,在幫助手冊中,就沒有使用強轉
  <% List<CateInfo> cateList=CateDao.getCateList(); %>
  <% for(CateInfo c:cateList) { %>
$("#select1").append("<option value='<%=c.getCateId()%>'><%=c.getCateName()%></option>");
  <%
   }
  %>
});
                                
                                            
 var link=$("<a href='http://www.sin.com'>餿狐</a>"); //本例使用了強轉
 link.css("font-size",30); //因為強轉後的對象就是一個jQuery對象,所以可以使用jQuery的任何方法
$("#divNewNode").append(link); 
             

== 內部插入

---append(content) //向每個匹配的元素內部追加內容。上例用的就是這個方法

---prepend(content) //向每個匹配的元素內部前置內容。

<p>I would like to say: </p>
$("p").prepend("<b>Hello</b>");

例子:根據給定數據,動態創建一個table

var tData={"陳某":"95","張某某":"80","孫某某":"80","範跑跑":"56","楊達才":"80"};
$.each(tData,function(key,value){
var tr="<tr><td>"+key+"</td><td>"+value+"</td></tr>"  這裡為什麼沒寫 value.value? 因為它不是對象類型的,就是一個常量
$("#tableBBB").append(tr);
});

 == 外部插入

----after(content) // $("p").after("<b>Hello</b>"); 註意 它是添加兄弟

----before(content)

== 刪除

--- remove([expr]) //從DOM中刪除所有匹配的元素。這個方法不會把匹配的元素從jQuery對象中刪除,因而可以在將來再使用這些匹配的元素。但除了這個元素本身得以保留之外,其他的比如綁定的事件,附加的數據等都會被移除

<p>哈嘍</p><p></p>

$("p").remove(); //結果  你

註意:remove 方法,有返回值,返回被刪除的結點對象,還可以繼續使用被刪除的節點,比如將其移動到別的地方

比如:

ar list=$("#ul1 li").remove();

$("#ul2 ").append(list);

其實寫成一句即可 $("#ul2 ").append($("#ul1 li").remove());

--- empty()  ///刪除匹配的元素集合中所有的子節點

<p>Hello, <span>Person</span> <a href="#">and person</a></p>        
$("p").empty(); // <p></p>

 --- detach([expr])  //從DOM中刪除所有匹配的元素    這個方法不會把匹配的元素從jQuery對象中刪除,因而可以在將來再使用這些匹配的元素。與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來。

//例子:
<style type="text/css">
.shengxiu{background:pink        }
</style>
                    
    <ul id="ulRemove">
        <li>劉備</li>
        <li class="shengxiu">關雨生鏽了</li>
        <li>張非</li>
        <li class="shengxiu">孫權生鏽了</li>
        <li>黃蓋</li>
        <li class="shengxiu">呂布生鏽了</li>
    </ul>    
<button id="btnRemove">除銹</button>    
$("#btnRemove").click(function(){
$("#ulRemove li.shengxiu").remove();        
});
//許可權列表的添加
<select id="selRole" multiple="multiple" style="width:15%; height:15%"> 
    <option>增加</option>
    <option>刪除</option>
    <option>修改</option>
    <option>查詢</option>
</select>    
<button id="btnGo" >>></button>
                    
    $("#btnGo").click(function(){
    $("#descRole").append(    
        $("#selRole option:selected").remove());    
});

五、幾個jQuery例子

//例一:設置一排覆選框,在勾選時,將已經勾選的項取出,列在一個<p><input type="checkbox" name="ckStudent" value="趙明明">趙明明
<input type="checkbox" name="ckStudent" value="楊顯彪">楊顯彪
<input type="checkbox" name="ckStudent" value="矯咪">矯咪
<input type="checkbox" name="ckPerson" value="楊國福">楊國福  //註意,它的name與其他不同,要過濾掉
<input type="checkbox" name="ckTeacher" value="老王頭">老王頭 //註意,它的name與其他不同,要過濾掉
                
    <p id="pMsg"> </p>
                
    $("input[name=ckStudent]").click(function(){
    var array=new Array();
$("input[name=ckStudent]:checked").each(function(key,obj){ array[key]=obj.value; }); /* 這是以前用過的,也可以 $.each($("input[name=ckStudent]:checked"),function(key,obj){ array[key]=obj.value; }); */ $("#pMsg").text(" 共選中了"+array.length+"項 "+ array.join(",")); });
//例二,計算器
<input type="text" id="num1" />+<input type="text" id="num2"/><button id="btnAdd" >=</button><input type="text"  id="num3" />
 $("#btnAdd").click(function(){
    var num1=$("#num1").val();
    var num2=$("#num2").val();
                                    
    var result= parseInt(num1)+parseInt(num2);
 $("#num3").val(result);
});
//例三 10秒鐘後可用的按鈕
var second=10;
var interval;
                      
$(function(){
$("#btnArgee").attr("disabled" ,true );
                             
 interval=setInterval("tick()",1000);    
});
                        
 function tick(){
 if(second ==0){
$("#btnArgee").val("同意");
$("#btnArgee").attr("disabled" ,false );
 clearInterval(interval);
               }
else{
$("#btnArgee").val("看好點協議內容,你還有 "+second-- +" 秒");
               }
}
                 
<button id="btnArgee">  </button>
//例子 
$(function(){
$("#btnPub").click(function(){
                                 
var title=$("#txtTitle").val();
var content=$("#txtContent").val();
                                 
var tr="<tr><td>"+title+"</td><td>"+content+"</td></tr>";
                                  
$("#tableTTT").append(tr);
                                 
   });
});
                        
<p>十一快放假了,都樂的不是動靜了</p>
                            
   <table id="tableTTT">
   <tr><td>匿名</td><td>沙發</td></tr>
   </table>
                            
   <input type="text" id="txtTitle" /> <br />
   <textarea id="txtContent" rows="10" cols="30"></textarea>
                            
<button id="btnPub">發佈</button>
//例子 選擇水果
<ul id="uiShuiguo">
    <li>香蕉</li>
    <li>蘋果</li>
    <li>哈蜜瓜</li>
    <li>芒果</li>
    <li>草梅</li>
    <li>水蜜桃</li>
</ul>
                      
$("#uiShuiguo li").css("cursor","pointer").mouseover(function(){
$(this).css("background","springgreen").siblings().css("background","white").click(function(){
$(this).css("background","lightskyblue").appendTo($("#ul2"));
                                            
    });
})          

六、jQuery 中的事件

分為以下幾類 頁面載入, 事件處理 ,事件委派,事件切換,事件

1.頁面載入

當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數

$(document).ready(function(){
// 在這裡寫你的代碼...
});
//簡單的寫法
$(function(){
// 在這裡寫你的代碼...
})

2.事件處理

-- bind(type, [data], fn) //為每個匹配元素的特定事件綁定事件處理函數

下例:在 btn1 這個按紐點擊的時候,給 div 這個元素加個 onclick事件

$("#btn1").click(function(){
$("#div1").bind("click",function(){
    alert($(this).html());
    });
});

思考:它和直接寫  $("#div1").click(function(){...}) 有什麼區別?

主要是後者一般都在 $.ready() 中初始,而bind可以隨時綁定事件

-- one(type, [data], fn) 綁定事件只執行一次 

例子:將上例中的 bind 直接改成 one 即可

-- unbind([type], [fn]) //將綁定事件取消

$("p").unbind() //取消所有綁定事件
$("p").unbind( "click" )  //取消綁定的click事件

例子,動態給div的click綁定兩個函數,然後取消一個

$(function(){
$("#btn1").click(function() {
$("div").bind("click",test);
$("div").bind("click",eat);
            });
                                            
$("#btn2").click(function() {
$("div").unbind("click",test);
                         });
});
                                    
  function test(){
   alert("ok");
   }
  function eat(){
   alert("正在eat 東西");
   }
                            
<div>我是div </div>
<button id="btn1">激活div</button>
<button id="btn2">取消div事件</button>

3.事件委派

4.事件切換

-- hover(over,out) //一個模仿懸停事件(滑鼠移動到一個對象上面及移出這個對象)的方法。

參數 over 表示滑鼠移到元素上要觸發的函

參數 out 表示滑鼠移出元素時要觸發的函數

//滑鼠移動到表格上的時候高亮
                       
$("td").hover(
 function(){
$(this).addClass("light");
           },
 function(){
$(this).removeClass("light");
           }
);                      

-- toggle()  //切換元素的可見狀態

-- toggle(speed, [easing], [callback])   // easing 用來指定切換效果,預設是"swing",可用參數"linear"

$("p").toggle("fast",function(){
      alert("Animation Done.");
});

--toggle(switch) //根據switch參數切換元素的可見狀態(ture為可見,false為隱藏)。

var flip = 0;
$("button").click(function () {
$("p").toggle( flip++ % 2 == 0 );
});

5.事件

--blur()  //調用被選中元素的 blur事件

--blur(fn) //設定blur事件

註:常用的事件

blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick,mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter,  // mouseout, mouseenter 組合起來其實就是hover,mouseleave,change,select,submit,keydown,keypress,keyup,error

七、jQuery 中的動態效果

jQuery中 動態效果主要有以下幾類:

基本、 滑動、  淡入淡出、 自定義、 設置

1.基本

--hide() //slow", "normal",  "fast

--hide(speed, [easing], [callback]) //,easing 預設是"swing",可用參數"linear"

用200毫秒將段落迅速隱藏,之後彈出一個對話框。

$("p").hide("fast",function(){
         alert("Animation Done.");
         });

--show()

--show(speed, [easing], [callback])

2.滑動

--slideDown(speed, [easing], [callback]) //通過高度變化(向下增大)來動態地顯示所有匹配的元素,在顯示完成後可選地觸發一個回調函數

$("p").slideDown("slow");   //實驗發現,它的效果和show 和 hide很象,只不過它只在是垂直方向上動作

--slideToggle(speed, [callback])

--slideUp(speed, [easing], [callback])

3.淡入淡出

--fadeIn(speed, [easing],  [callback])

--fadeOut(speed, [easing], [callback])

--fadeTo(speed, opacity, [easing], [callback])  //  $("div").fadeTo("slow", 0.2);  調到指定的透明度

--fadeToggle(speed, [easing],  [callback])

$("p").fadeToggle("slow");
<table id="table1" width="80%" border="1" cellspacing=0 > <tr><td>這是不變的</td><td>數據一</td><td>數據三</td></tr>
</table>

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

-Advertisement-
Play Games
更多相關文章
  • 面向對象編程就是將你的需求抽象成一個對象,針對這個對象分析其特征(屬性)和動作(方法),這個對象稱為“類”。JavaScript 的核心是支持面向對象的,同時它也提供了強大靈活的 OOP 語言能力,遺憾的是對於JavaScript這種解釋性的弱類型語言,沒有強類型語言中那種通過class等關鍵字實現... ...
  • 接著上文[js高手之路] html5 canvas系列教程 - 狀態詳解(save與restore),相信大家都應該玩過美顏功能,而我們今天要講的就是canvas強大的像素處理能力,通過像素處理,實現反色,黑白,亮度,復古,蒙版,透明等美顏效果. getImageData:獲取一張圖片的像素數據 c ...
  • android的一個報錯 解決: 問題是在/android/app/src/java/.../MainApplication.java的getPackages()中重覆引用了某個package,刪除掉重覆內容即可 新版中添加notifyJSDidLoad方法報錯 1. 如果不設平臺,在ios里會報 ...
  • 第一次在Vue中應用,swiper在在Vue之前引用會無效,需要在實例化Vue對象後再實例化Swiper才能產生效果 ...
  • 前一陣七夕前夕搞了一個微信活動,共用男女友,時間緊任務重,記得當時是周三提的需求,那就抓緊搞起來,後來會有一個生成圖片的功能,遇到了一些坎,下麵分析下技術點,用到的就是canvas的toDataURL()方法,可是生成圖片的時候,需要取微信授權後的用戶頭像和昵稱,調試了一番頭像的圖片總是概率性的不顯 ...
  • 分享自己封裝的前端分頁js工具類 下麵是預設樣式效果截圖 可以隨意更改js及css 很靈活 說明: ...
  • // var openid = $state.params.openid; var paramsArr = location.href.match(/\?\S+/)[0].replace('?', '').split('&'); vm.params = {}; for (var i = 0; i < ...
  • 學習 JavaScript 樹 ======================== 樹(Tree) 在電腦科學中,數據結構是一門研究 非數值計算 的程式設計問題中電腦的操作對象(數據元素)以及它們之間的操作和運算等的學科。 它包含三方面的內容: 數據的邏輯結構(常見有樹、圖、集合、線性) 數據存儲 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...