首頁 > web前端 > js教程 > 淺談jQuery中的遍歷函數

淺談jQuery中的遍歷函數

青灯夜游
發布: 2021-01-20 16:09:31
轉載
2052 人瀏覽過

本篇文章帶大家來了解jQuery中的遍歷函數。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

淺談jQuery中的遍歷函數

推薦教學:jq教學

#jQuery 遍歷函數

jQuery 遍歷函數包含了用於篩選、尋找和串聯元素的方法。

函數 描述
#.add() 將元素加入到匹配元素的集合中。
.andSelf() 將堆疊中先前的元素集加入到目前集合中。
.children() 獲得符合元素集合中每個元素的所有子元素。
.closest() 從元素本身開始,逐級向上級元素匹配,並返回最先匹配的祖先元素。
.contents() 取得符合元素集合中每個元素的子元素,包括文字和註解節點。
.each() 對 jQuery 物件進行迭代,為每個匹配元素執行函數。
.end() 結束目前鏈中最近的一次篩選操作,並將匹配元素集合返回到前一次的狀態。
.eq() 將符合元素集合縮減為位於指定索引的新元素。
.filter() 將符合元素集合縮減為符合選擇器或符合函數傳回值的新元素。
.find() 取得目前符合元素集合中每個元素的後代,由選擇器進行篩選。
.first() 將匹配元素集合縮減為集合中的第一個元素。
.has() 將匹配元素集合縮減為包含特定元素的後代的集合。
.is() 根據選擇器檢查目前符合元素集合,如果存在至少一個符合元素,則傳回 true。
.last() 將符合元素集合縮減為集合中的最後一個元素。
.map() 把目前符合集合中的每個元素傳遞給函數,產生包含傳回值的新 jQuery 物件。
.next() 獲得符合元素集合中每個元素緊鄰的同儕元素。
.nextAll() 獲得符合元素集合中每個元素之後的所有同儕元素,由選擇器進行篩選(可選)。
.nextUntil() 取得每個元素之後所有的同儕元素,直到遇到符合選擇器的元素為止。
.not() 從符合元素集合中刪除元素。
.offsetParent() 獲得用於定位的第一個父元素。
.parent() 取得目前符合元素集合中每個元素的父元素,由選擇器篩選(可選)。
.parents() 獲得目前符合元素集合中每個元素的祖先元素,由選擇器篩選(可選)。
.parentsUntil() 取得目前符合元素集合中每個元素的祖先元素,直到遇到符合選擇器的元素為止。
.prev() 獲得符合元素集合中每個元素緊鄰的前一個同儕元素,由選擇器篩選(可選)。
.prevAll() 獲得符合元素集合中每個元素之前的所有同儕元素,由選擇器進行篩選(可選)。
.prevUntil() 取得每個元素之前所有的同儕元素,直到遇到符合選擇器的元素為止。
.siblings() 獲得符合元素集合中所有元素的同儕元素,由選擇器篩選(可選)。
.slice() 將符合元素集合縮減為指定範圍的子集。

 each的用法

 1.陣列中的each

复制代码

 var arr = [ "one", "two", "three", "four"];     
 $.each(arr, function(){     
    alert(this);     
 });   
//上面这个each输出的结果分别为:one,two,three,four    
    
var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]     
$.each(arr1, function(i, item){     
   alert(item[0]);     
});     
//其实arr1为一个二维数组,item相当于取每一个一维数组,   
//item[0]相对于取每一个一维数组里的第一个值   
//所以上面这个each输出分别为:1   4   7     
  
  
var obj = { one:1, two:2, three:3, four:4};     
$.each(obj, function(i) {     
    alert(obj[i]);           
});   
//这个each就有更厉害了,能循环每一个属性     
//输出结果为:1   2  3  4
登入後複製

2 .遍歷Dom元素中

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("li").each(function(){
      alert($(this).text())
    });
  });
});
</script>
</head>
<body>
<button>输出每个列表项的值</button>
<ul>
<li>Coffee</li>
<li>Milk</li>
<li>Soda</li>
</ul>
</body>
</html>
登入後複製

依序彈出Coffee,Milk,Soda

 3.each和map的比較

下面的範例是取得每一個多框的ID值;

each方法:

定義一個空數組,經過each方法,往數組添加ID值;最後將數組轉換成字串後,alert這個值;

$(function(){
    var arr = [];
    $(":checkbox").each(function(index){
        arr.push(this.id);
    });
    var str = arr.join(",");
    alert(str);
})
登入後複製

map方法:

將每個:checkbox執行return this.id;並將這些返回值,自動的保存為jQuery對象,然後用get方法將其轉換成原生Javascript數組,再使用join方法轉換成字串,最後alert這個值;

$(function(){
    var str = $(":checkbox").map(function() {
        return this.id;
    }).get().join();    
    alert(str);
})
登入後複製

當有需一個陣列的值的時候,用map方法,很方便。

 4.jquery中使用each

例遍數組,同時使用元素索引和內容。 (i是索引,n是內容)

程式碼如下:

$.each( [0,1,2], function(i, n){
alert( "Item #" + i + ": " + n );
});
登入後複製

例遍對象,同時使用成員名稱和變數內容。 (i是成員名稱,n是變數內容)

程式碼如下:

$.each( { name: "John", lang: "JS" }, function(i, n){
alert( "Name: " + i + ", Value: " + n );
});
登入後複製

例遍dom元素,此處以一個input表單元素作為範例。

如果你dom中有一段這樣的程式碼

<input name="aaa" type="hidden" value="111" /> 
<input name="bbb" type="hidden" value="222" /> 
<input name="ccc" type="hidden" value="333" /> 
<input name="ddd" type="hidden" value="444"/>
登入後複製

然後你使用each如下

程式碼如下:

$.each($("input:hidden"), function(i,val){
alert(val); //输出[object HTMLInputElement],因为它是一个表单元素。
alert(i); //输出索引为0,1,2,3
alert(val.name); //输出name的值
alert(val.value); //输出value的值
});
登入後複製

5.each中根據this查找元素

實現效果」回覆」兩個字只有在滑鼠經過的時候才顯示出來

<ol class="commentlist">
    <li class="comment">
        <div class="comment-body">
          <p>嗨,第一层评论</p>
          <div class="reply">
            <a href="#" class=".comment-reply-link">回复</a>
          </div>
        </div>
        <ul class="children">
          <li class="comment">
            <div class="comment-body">
            <p>第二层评论</p>
            <div class="reply">
              <a href="#" class=".comment-reply-link">回复</a>
            </div>
          </div></li>
        </ul>
    </li>
</ol>
登入後複製

js程式碼如下

$("div.reply").hover(function(){
  $(this).find(".comment-reply-link").show();
},function(){
  $(this).find(".comment-reply-link").hide();
});
登入後複製

實現效果,驗證判斷題是否都有選擇

html

<ul id="ulSingle">
    
            <li class="liStyle">
                1.  阿斯顿按时<label id="selectTips" style="display: none" class="fillTims">请选择</label>
                <!--begin选项-->
                <ul>
                    
                            <li class="liStyle2">
                                <span id="repSingle_repSingleChoices_0_labOption_0">A         </span>.阿萨德发<input type="hidden" name="repSingle$ctl00$repSingleChoices$ctl00$hidID" id="repSingle_repSingleChoices_0_hidID_0" value="1" />
                                <input id="repSingle_repSingleChoices_0_cheSingleChoice_0" type="checkbox" name="repSingle$ctl00$repSingleChoices$ctl00$cheSingleChoice" /></li>
                        
                            <li class="liStyle2">
                                <span id="repSingle_repSingleChoices_0_labOption_1">B         </span>.阿萨德发<input type="hidden" name="repSingle$ctl00$repSingleChoices$ctl01$hidID" id="repSingle_repSingleChoices_0_hidID_1" value="2" />
                                <input id="repSingle_repSingleChoices_0_cheSingleChoice_1" type="checkbox" name="repSingle$ctl00$repSingleChoices$ctl01$cheSingleChoice" /></li>
                        
                            <li class="liStyle2">
                                <span id="repSingle_repSingleChoices_0_labOption_2">C         </span>.阿斯顿<input type="hidden" name="repSingle$ctl00$repSingleChoices$ctl02$hidID" id="repSingle_repSingleChoices_0_hidID_2" value="3" />
                                <input id="repSingle_repSingleChoices_0_cheSingleChoice_2" type="checkbox" name="repSingle$ctl00$repSingleChoices$ctl02$cheSingleChoice" /></li>
                        
                </ul>
                <!--end选项-->
                <br />
            </li>
        
</ul>
登入後複製

js程式碼

//验证单选题是否选中
        $("ul#ulSingle>li.liStyle").each(function (index) {
            //选项个数
            var count = $(this).find("ul>li>:checkbox").length;
            var selectedCount = 0
            for (var i = 0; i < count; i++) {
                if ($(this).find("ul>li>:checkbox:eq(" + i + ")").attr("checked")) {
                    selectedCount++;
                    break;
                }
            }
            if (selectedCount == 0) {
                $(this).find("label#selectTips").show();
                return false;
            }
            else {
                $(this).find("label#selectTips").hide();
            }
        })
登入後複製

 ps:傳說中attr("property ", "value");在部分瀏覽器不管用可以用prop,如果只是判斷可以用$(this).find("ul>li>:checkbox:eq(" i ")").is(" :checked");

6.官方解釋
#以下是官方的解釋:

jQuery.each(object, [callback])
登入後複製

概述 

#通用例遍方法,可用來例遍物件和陣列。

不同於例遍 jQuery 物件的 $().each() 方法,此方法可用於例遍任何物件。回呼函數有兩個參數:第一個為物件的成員或陣列的索引,第二個為對應變數或內容。如果需要退出 each 循環可使回呼函數傳回 false,其它傳回值將被忽略。 

參數 

objectObject :需要例遍的物件或陣列。 

callback (可選)Function :每個成員/元素執行的回呼函數。

更多程式相關知識,請造訪:程式設計影片! !

以上是淺談jQuery中的遍歷函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板