舉個例子
var arr = $('#table tbody tr td:nth-child(2)') //根據id依次找到表格中的td,而后取每列的第二個值
.map(function () { return $(this).text() }) // 使用 map 對每一個 td 進行處理,function為回調函數,返回每個元素的text
.get(); // 將對象集合轉換為數組,得到arr數組
另外還可以在后面.join(",") 這將轉換成字符串。
jQuery下有個概念叫“類數組”,比如$( " li " ),當取到一個集合的時候,會有數組的一些屬性,但是instancseof Array仍然是false。但是var a=$( "li" ).get()這樣處理一下,然后instancseof Array就返回true。
要注意var a=$( "li" ).get(1)里頭加序列號可以取到單個元素,這些元素的性質不是jQuery對象,而是Js對象,所以不可直接用jQuery方法。
map()的功能主要有兩步,第一步就是遍歷,第二步就是替換。
$( " li " ).map( function( ){
return $(this).text( ); // 注意return關鍵字不可少
} )
map先遍歷,每一項都返回一個text()值,然后map會將這些值自動去替換$("li")集合的每一項值,所以這個時候還是個類數組(因為還是$(" li ")的殼子),不是個真正的數組。於是后面加個get()操作就變成真正的數組了,於是可以用join()這樣專屬於數組的方法。
如:
$( " li " ).map( function( ){
return $(this).text( );
} ).get( ).join("%") // 拼接成字符串,中間用“%”隔開
上述方法是用map()先封裝成數組。也可以用each()。但要進行遍歷判斷的時候,就無需使用封裝成數組再進行遍歷。直接在回調函數里進行判斷即可
也可用each()方法
var arr = $('#table tbody tr td:nth-child(2)').map(function () {
if($(this).text() == selectValue){
alert("already exists!");
return false;
}
});
var arr = $('#table tbody tr td:nth-child(2)').each(function () {
if($(this).text() == selectValue){
alert("already exists!");
return false;
}
});
nth-child(2) 選取第幾個標簽,里面的數字可以是你想要的
nth-child(n+4) 選取大於等於4標簽,“n”表示從整數
nth-child(-n+4)選取小於等於4標簽
nth-child(2n)選取偶數標簽,2n也可以是even
nth-child(2n-1)選取奇數標簽,2n-1可以是odd
nth-child(3n+1)自定義選取標簽,3n+1表示“隔二取一”
last-child選取最后一個標簽,同first-child
nth-last-child(3)選取倒數第幾個標簽,3表示選取第3個
