JSON 知識梳理

風暴阿呆發表於2017-12-14

JSON(JavaScript Object Notation, JS 物件標記) 是一種輕量級的資料交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。

參考源引地址:
baike.baidu.com/item/JSON/2…
blog.csdn.net/fengyun14/a…
blog.csdn.net/feicongcong…
www.ruanyifeng.com/blog/2014/0…
www.w3school.com.cn/jquery/jque…

JSON 語法規則

在 JS 語言中,一切都是物件。因此,任何支援的型別都可以通過 JSON 來表示,例如字串、數字、物件、陣列等。但是物件和陣列是比較特殊且常用的兩種型別:
物件表示為鍵值對
陣列由逗號分隔
花括號儲存物件
方括號儲存陣列

變數定義

var a = {};  //定義一個空的json物件
var b = [];  //定義一個空的json陣列
var c = "";  //定義一個空的字串
複製程式碼

JSON 鍵/值對

JSON 鍵值對是用來儲存 JS 物件的一種方式,和 JS 物件的寫法也大同小異,鍵/值對組合中的鍵名寫在前面並用雙引號 "" 包裹,使用冒號 : 分隔,然後緊接著值:

{"firstName": "John"}   鍵名不待帶引號也可以正確解析,但是不推薦
推薦{"a": "Hello", "b": "World"}
不推薦 {a: 'Hello', b: 'World'}
複製程式碼

強調 JSON鍵(屬性)區分大小寫

var a = {"name" : "John", "Name" : "Lily"};   //name,Name 是兩個不同的鍵
複製程式碼

單引號和雙引號

JS中定義字串變數時,用單引號或者雙引號的是可以的,可根據實際情況具體選擇
如果字串值是 一串html程式碼,或者值裡面包含比較多的雙引號,那麼可以使用單引號:

var html = '<div class="infobox" style="width:200px;"></div>';
var word = 'John Say:"where are you going?"';
複製程式碼

反之可以使用雙引號:

var a = "Hi,I'm going to school";
複製程式碼

如果字串值裡面同時包含單引號和雙引號,那麼如果使用單引號包裹值,值裡面的單引號需要用 \ 轉義,如果使用雙引號包裹,那麼值裡面的雙引號需要用 \ 轉義

var html = '<div class="infobox" style="width:200px;">Hi,I\'m going to school</div>';
var html2 = "<div class=\"infobox\" style=\"width:200px;\">Hi,I'm going to school</div>"
複製程式碼

如果值裡面包含\那麼需要用兩個\表示

var str = "這段字串裡面含有一個\\字元";
var str2 = "這段字串裡面含有兩個\\\\字元";
複製程式碼

字串中使用變數

如果字串使用單引號包裹,那麼也使用單引號(' + 變數名稱 + ')連線變數

var name="John";
var str1 = '大家好!我的名字叫:'+ name +',今天很高興認識大家';
var str2 = '大家好!我的名字叫'+ name;
複製程式碼

如果字串使用雙引號包裹,那麼也使用雙引號("+ 變數名稱 +")連線變數

var name="John";
var str1 = "大家好!我的名字叫:"+ name +",今天很高興認識大家";
var str2 = "大家好!我的名字叫"+ name;
複製程式碼

字串多行展示

var name="John";
//方式1
var html='<div>';
    html+=' <p>';
    html+=' <strong>大家好</strong>';
    html+=' <span>很高興認識大家</span>';
    html+=' </p>';
    html+='</div>';
//方式2
var html1='<div>'
        +'  <p>'
        +'  <strong>大家好</strong>'
        +'  <span>很高興認識大家</span>'
        +'  </p>'
        +'</div>';
//方式3
var html2='<div>'
        +'  <p>'
        +'  <strong>大家好</strong>'
        +'  <span>我的名字叫:'+ name +',很高興認識大家</span>'
        +'  </p>'
        +'</div>';
//方式4
var html3='<div>\
                <p>\
                    <strong>大家好</strong>\
                    <span>很高興認識大家</span>\
                </p>\
            </div>';
//方式5
var html4='<div>\
                <p>\
                    <strong>大家好</strong>\
                    <span>我的名字叫:'+ name +',很高興認識大家</span>\
                </p>\
            </div>';
複製程式碼

JSON 與 JS 物件的關係

很多人搞不清楚 JSON 和 Js 物件的關係,甚至連誰是誰都不清楚。其實,可以這麼理解:

JSON 是 JS 物件的字串表示法,它使用文字表示一個 JS 物件的資訊,本質是一個字串。如:

var obj = {a: 'Hello', b: 'World'}; //這是一個物件,注意鍵名也是可以使用引號包裹的
var json = '{"a": "Hello", "b": "World"}'; //這是一個 JSON 字串,本質是一個字串
複製程式碼

JSON 和 JS 物件互轉

要實現從物件轉換為 JSON 字串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'}); //結果是 '{"a": "Hello", "b": "World"}'
複製程式碼

要實現從 JSON 轉換為物件,使用 JSON.parse() 方法:

var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //結果是 {a: 'Hello', b: 'World'}
//jQuery.parseJSON('{"a": "Hello", "b": "World"}'); //同樣效果
複製程式碼

常用型別

在 JS 語言中,一切都是物件。因此,任何支援的型別都可以通過 JSON 來表示,例如字串、數字、物件、陣列等。但是物件和陣列是比較特殊且常用的兩種型別。

物件:物件在 JS 中是使用花括號包裹 {} 起來的內容,資料結構為 {key1:value1, key2:value2, ...} 的鍵值對結構。在物件導向的語言中,key 為物件的屬性,value 為對應的值。鍵名可以使用整數和字串來表示。值的型別可以是任意型別。

陣列:陣列在 JS 中是方括號 [] 包裹起來的內容,資料結構為 ["java", "javascript", "vb", ...] 的索引結構。在 JS 中,陣列是一種比較特殊的資料型別,它也可以像物件那樣使用鍵值對,但還是索引使用得多。同樣,值的型別可以是任意型別。

JSON資料的常用使用場景

物件賦值與讀取

賦值:
var a = {};
a["id"] = 1;  //數字賦值
a["name"] = "John";  //字串賦值
var _school = "北京大學";
a["school"] = _school;  //字串變數賦值
//a={"id": 1, "name": "John" ,"school": "北京大學"};
複製程式碼
讀取:
var a = {"id": 1,"name": "John","school": "北京大學"};
//方式一
var html = "編號:"+ a.id +",姓名:"+ a.name +",就讀學校:"+ a.school;
//方式二
var html2 = "編號:"+ a["id"] +",姓名:"+ a["name"] +", 就讀學校:"+ a["school"];
//一個比較複雜的例子
var a = {
       "id": 1,
       "name": "John",
       "school": "北京大學",
       "schoolinfo": {
            "title": "北京大學",
            "address": "中國北京市朝陽區20號"
        }
      };
var html3 = "編號:" +a.id
        +", 姓名:"+ a.name
        +", 就讀學校:"+ a.school
        +"學校地址:"+ a.schoolinfo.address;
var html4 = "編號:"+ a["id"]
        +", 姓名:"+ a["name"]
        +", 就讀學校:"+ a["school"]
        +", 學校地址:"+ a["schoolinfo"]["address"];
複製程式碼

如果一個物件裡面的某個鍵(屬性)不存在,那麼會報undefined,所以在不確定鍵是否存在的情況下,需要作undefined驗證

var a = {
  "id": 1,
  "name": "John",
  "school": "北京大學",
  "schoolinfo": {
        "title": "北京大學",
        "address": "中國北京市朝陽區20號"
    }
};
var html = "編號:"+ a["id"] +",姓名:"+ a["name"] +",就讀學校:"+ a["school"];
if (a["age"] != undefined)
{
      html += ",年齡:"+ a["age"];
}
//推薦使用下面方法驗證
if (a["age"] != null)
{
      html += ",年齡:"+ a["age"];
}
if (a["schoolinfo"] != null && a["schoolinfo"]["address"] != null){
    html += ",學校地址:"+ a["schoolinfo"]["address"];
}
複製程式碼

關於null和undefined的區別請參閱下面地址:
blog.csdn.net/fengyun14/a…
blog.csdn.net/feicongcong…
www.ruanyifeng.com/blog/2014/0…

將一個物件新增到一個陣列(push())

//示例一
var arr = [3,5];
arr.push(1);
arr.push(2);
var s = "你好";
var t = 10;
arr.push(s);
arr.push(t)
//結果:arr=[3, 5, 1, 2, "你好", 10];
​
//示例二
var arr2 = [{"id": 1,"name": "John"},{"id": 2,"name": "Lily"}];
var user = {"id": 3,"name": "Susan"};
arr2.push(user);
arr2.push({"id": 4,"name": "Zhiyi Wang"});

//結果:
arr2=[
        {"id": 1, "name": "John"},
        {"id": 2, "name": "Lily"},
        {"id": 3, "name": "Susan"},
        {"id": 4, "name": "Zhiyi Wang"}
    ]
複製程式碼

陣列過濾($.grep())

//示例一
var arr = [1, 2, 3, 4, 5];
//過濾出大於3的元素放到新的陣列newarr裡面
var newarr = $.grep(arr, function (v) {
    return v > 3;
});
//newarr:[4,5]

//示例二
//過濾出就讀於北京大學的記錄放到新陣列裡面
var students = [
    {"id":1,"name":"John","school":"清華大學"},
    {"id":2,"name":"Lily","school":"北京大學"},
    {"id":3,"name":"Susan","school":"上海大學"},
    {"id":4,"name":"Zhiyi Wang","school":"北京大學"}
];
var result = $.grep(students, function (v) {
    return v["school"] == "北京大學";
    //或者 return  v.school == "北京大學";
});

//結果:
result = [
  {"id": 2, "name": "Lily", "school": "北京大學"},
  {"id": 4, "name": "Zhiyi Wang", "school": "北京大學"}
]
複製程式碼

清空一個陣列

var arr = [1,2,3];
//清空方式一
arr = []; //推薦使用
//清空方式二
arr.length = 0;
//清空方式三
arr.splice(0,arr.length); 
複製程式碼

查詢(indexOf(), lastIndexOf(), $.inArray())

字串查詢
indexOf(): 第一次出現
lastIndexOf(): 最後一次出現

var str = "hello,my name is susan";
//查詢 o 第一次出現的位置
var index1 = str.indexOf('o');
//index1 = 4;
//查詢 s 最有一次出現的位置
var index2 = str.lastIndexOf("s");
//index2 = 19;

//如果沒有找到,則返回-1;
複製程式碼

陣列查詢
$.inArray()

var names  =["John", "Lily", "Susan"];
var index = $.inArray("Lily", names);
//index = 1;
var index2 = $.inArray("John", names);
//index2 = 0;//找到了 角標0
var index3 = $.inArray("Zhang", names);
//index3 = -1; 注意:如果沒有找到返回-1,而非0
複製程式碼

陣列合並去重(concat,jQuery.merge,jQuery.unique)

var names1=["John","Lily","Susan"];
var names2=["Zhangli","Lily","Taidi"];

//方式一
var names3=names1.concat(names2);

//方式二
var names4=$.merge(names1,names2); //將names2合併到names1裡面
//names4 和 names1 集合是一樣的

//方式三
var names5=[];
for(var i=0;i<names1.length;i++)
{
    names5.push(names1[i]);  
}
for(var i=0;i<names2.length;i++)
{
    names5.push(names2[i]);  
}

//或者
$.each(names1,function(i,v){
    names5.push(v)
});
$.each(names2,function(i,v){
    names5.push(v)
});

//去重
$.unique(names3);  //此時的names3已經去重複了,無需賦值給某個變數
複製程式碼

陣列轉化為字串(join)

var student = [1,2,3,4];
var str = student.join(",");
//str = "1, 2, 3, 4";

注意:一般此方法用於數字陣列轉字串,如果是字串陣列有逗號,可能會有問題
複製程式碼

將陣列資料輸出到html表格(for, $.each())

html程式碼:
<html>
<body>
    <div id="dataview"></div>
</body>
</html>
複製程式碼
json資料:
var students=[
    {"id":1,"name":"John","school":"清華大學"},
    {"id":2,"name":"Lily","school":"北京大學"},
    {"id":3,"name":"Susan","school":"上海大學"},
    {"id":4,"name":"Zhiyi Wang","school":"北京大學"}
];
將stucents裡面的資料顯示到div[id='dataview']裡面
複製程式碼
js程式碼:
方法一
var html = '<table>';
html += '<tr>\
            <td>ID</td>\
            <td>姓名</td>\
            <td>學校</td>\
        </tr>';
for(var i = 0; i < students.length; i++)
{
    var item = students[i];
    html += '<tr>'
            +'<td>'+ item["id"] +'</td>'
            +'<td>'+ item["name"] +'</td>'
            +'<td>'+ item["school"] +'</td>'
        +'</tr>';
}
html += '</table>';
$("#dataview").html(html);

//或者
var html2 = '<table>';
html2 += '<tr>\
            <td>ID</td>\
            <td>姓名</td>\
            <td>學校</td>\
        </tr>';
$.each(students,function(index,item){
    html2 += '<tr>'
            +'<td>'+ item["id"] +'</td>'
            +'<td>'+ item["name"] +'</td>'
            +'<td>'+ item["school"] +'</td>'
        +'</tr>';
});
html2 += '</table>';
$("#dataview").html(html2);
複製程式碼
方法二
var table=$('<table></table>');
var header=$('<tr>\
            <td>ID</td>\
            <td>姓名</td>\
            <td>學校</td>\
        </tr>');
table.append(header);
for(var i=0;i<students.length;i++)
{
  var item = students[i];
  var tr=$('<tr>'
            +'<td>'+item["id"]+'</td>'
            +'<td>'+item["name"]+'</td>'
            +'<td>'+item["school"]+'</td>'
        +'</tr>');
    table.append(tr);
}
$("#dataview").append(table);//此段程式碼也可以放置再第1行後面

//或者
var table2=$('<table></table>');
var header2=$('<tr>\
            <td>ID</td>\
            <td>姓名</td>\
            <td>學校</td>\
        </tr>');
header2.append(header2);
$.each(students,function(index,item){
     var tr=$('<tr>'
            +'<td>'+item["id"]+'</td>'
            +'<td>'+item["name"]+'</td>'
            +'<td>'+item["school"]+'</td>'
        +'</tr>');
    table2.append(tr);
})
$("#dataview").append(table2); 
複製程式碼

遍歷JSON物件所有鍵值(所有屬性和值)

var a = {Id: 0, Title: "kuujia soft", AddDate: "2017-08-05"};
var str = "";
for(var key in a){
    str += key + ":" + a[key] + "<br />";
}
複製程式碼

將JSON物件值輸出到form表單

json資料:
var data={"id":1,"name":"John","school":"清華大學","sex":"男"}
複製程式碼

普通用法

html程式碼:
<form>
  <div>
    <label>編號</label>
    <input type="text" id="userid" />
  </div>
  <div>
    <label>姓名</label>
    <input type="text" id="username" />
  </div>
  <div>
    <label>性別</label>
    <select id="usersex">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
  </div>
  <div>
    <label>就讀學校</label>
    <input type="text" id="gotoschool" />
  </div>
</form>


表單賦值:
$("#userid").val(data.id);
//或者$("#userid").val(data["id"]);
$("#username").val(data.name);
//或者$("#username").val(data["name"]);
$("#usersex").val(data.sex);
//或者$("#usersex").val(data["sex"]);
$("#gotoschool").val(data.school);
//或者$("#gotoschool").val(data["school"]);
複製程式碼

進階用法

html程式碼:
<!--為需要賦值的DOM增加一個自定義屬性 field,值為json物件的鍵(屬性)名-->
<form>
  <div>
    <label>編號</label>
    <input type="text" field="id" />
  </div>
  <div>
    <label>姓名</label>
    <input type="text" field="name" />
  </div>
  <div>
    <label>性別</label>
    <select field="sex">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
  </div>
  <div>
    <label>就讀學校</label>
    <input type="text" field="school" />
  </div>
</form>


表單賦值:
//方式一
for(var key in data)
{
    $("input[field='"+key+"'],select[field='"+key+"']").val(data[key]);      
}
//方式二
$("input[field],select[field]").each(function(){
    var field=$(this).attr("field");
    if(field!=null&&data[field]!=null)
    {
        $(this).val(data[field]);
    }
});
複製程式碼

從form表單獲取值到JSON物件

普通用法

html程式碼:
<form>
  <div>
    <label>編號</label>
    <input type="text" id="userid" />
  </div>
  <div>
    <label>姓名</label>
    <input type="text" id="username" />
  </div>
  <div>
    <label>性別</label>
    <select id="usersex">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
  </div>
  <div>
    <label>就讀學校</label>
    <input type="text" id="gotoschool" />
  </div>
</form>


js獲取表單值到json物件裡面:
var data={};
data["id"]=$("#userid").val();
data["name"]=$("#username").val();
data["sex"]=$("#usersex").val();
data["school"]=$("#gotoschool").val();
複製程式碼

進階用法

html程式碼:
<!--為需要賦值的DOM增加一個自定義屬性 field,值為json物件的鍵(屬性)名-->
<form>
  <div>
    <label>編號</label>
    <input type="text" field="id" />
  </div>
  <div>
    <label>姓名</label>
    <input type="text" field="name" />
  </div>
  <div>
    <label>性別</label>
    <select field="sex">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
  </div>
  <div>
    <label>就讀學校</label>
    <input type="text" field="school" />
  </div>
</form>


js獲取表單值到json物件裡面:
var data={};
$("input[field],select[field]").each(function(){
  var field=$(this).attr("field");
  data[field]=$(this).val();
});
複製程式碼

從一個table表單獲取資料到JSON陣列

比如批量錄入學員資訊後需要獲取資料到json陣列

html程式碼:
<form>
  <table>
    <tr>
        <td>ID:<input type="text" field="id" /></td>
        <td>姓名:<input type="text" field="name" /></td>
        <td>性別:<select field="sex">
            <option value="男">男</option>
            <option value="女">女</option>
          </select></td>
        <td>學校:<input type="text" field="school" /></td>
    </tr>
    <tr>
        <td>ID:<input type="text" field="id" /></td>
        <td>姓名:<input type="text" field="name" /></td>
        <td>性別:<select field="sex">
            <option value="男">男</option>
            <option value="女">女</option>
          </select></td>
        <td>學校:<input type="text" field="school" /></td>
    </tr>
    <tr>
        <td>ID:<input type="text" field="id" /></td>
        <td>姓名:<input type="text" field="name" /></td>
        <td>性別:<select field="sex">
            <option value="男">男</option>
            <option value="女">女</option>
          </select></td>
        <td>學校:<input type="text" field="school" /></td>
    </tr>
  </table>
</form>


js程式碼:
var students=[];
$("form table tr").each(function(){
    var _s=$(this);
    var item={};
    $("input[field],select[field]",_s).each(function(){   //注意此行程式碼的$(a, b)兩個引數的用途:
      var field=$(this).attr("field");//注意此行的this和第3行程式碼的this
      item[field]=$(this).val();
    });
    students.push(item);
});
複製程式碼

Jquery常用方法

$.trim()    左右兩邊去空格
$.each()    遍歷函式,如:遍歷一個陣列,遍歷一個頁面的所有連結/圖片等等
$.inArray() 查詢
$(a,b)  獲取元素
$(a,b).val()    設定或獲取一個節點(input,textarea,select)的值
$(a,b).html()   設定或獲取一個節點的html
$(a,b).text()   設定或獲取一個節點的text
$(a,b).show()   顯示一個元素
$(a,b).hide()   隱藏一個元素
$(a,b).toggle() 切換顯示/隱藏匹配的元素(如果顯示就隱藏,如果隱藏就顯示),並可選附帶過渡動畫效果。
$(a,b).attr()   設定或獲取某個屬性
$(a,b).prop()   設定或獲取某個屬性
$(a,b).is() 重用於判斷一個元素是否隱藏,一個核取方塊是否選中
$(a,b).remove() 移除一個元素
$(a,b).append(c)    往一個元素內(末尾)追加一個子元素
$(a,b).prepend(c)   往一個元素內(開始)追加一個子元素
$(a,b).before(c)    在一個元素(外部)前面插入一個元素
$(a,b).after(c) 在一個元素(外部)後面插入一個元素
$(a,b).empty()  清空一個元素裡面的所有子節點
$(a,b).addClass(c)  增加一個樣式(css類名)
$(a,b).toggleClass(c)   切換當前物件所匹配的每一個元素上指定的css類名。
$(a,b).removeClass(c)   移除一個樣式(css類名)
$(a,b).css()    設定或返回元素的CSS屬性
$(a,b).offset() 獲取滑鼠相對於當前文件的座標。
$(a,b).position()   獲取當前元素相對於離它最近的擁有定位的祖輩元素的座標。
複製程式碼

jQuery 選擇器

選擇器
例項
選取

基本選擇器——根據多個選擇器的組合篩選元素

[s1,s2,sN]
$("p, div, #abc")
所有的p元素、div元素和 id="abc"的元素

[s1s2sN]
$(":radio[name=uid]:checked")
所有被選中的name="uid"的radio元素

[ancestor escendant]
$("p span")
p標籤內的所有span元素

[parent > child]
$("p > span")
所有作為p標籤的直接子元素的span元素

[prev + next]
$("label + input")
所有緊跟在label元素後面的那個同輩input元素

[prev ~ sibings]
$("tr#L2 ~ tr")
在id="L2"的tr元素之後的所有同輩tr元素
複製程式碼

基本選擇器——根據id、class類名、標籤名等篩選元素

[\*]
$("*")
所有元素

[#id]
$("#abc")
id="abc"的元素

[.className]
$(".post")
所有包含類名"post"的元素

[tagName]
$("p")
所有p元素
複製程式碼

偽類選擇器——根據元素在匹配到的所有元素中的特定次序篩選元素

[:first]
$("p:first")
第一個p標籤

[:last]
$("p:last")
最後一個p標籤

[:even]
$("tr:even")
所有偶數tr標籤

[:odd]
$("tr:odd")
所有奇數tr標籤

[:eq(index)]
$("li:eq(3)")
第4個li標籤(index從0開始算起)

[:gt(index)]
$("li:gt(2)")
所有index大於2的 li 標籤(第4、5、6……個li標籤)

[:lt(index)]
$("li:lt(2)")
所有index小於2的li標籤(第1、2個li標籤)
複製程式碼

偽類選擇器——根據元素在父元素的子元素中的特定次序篩選元素

[:first-child]
$("span:first-child")
所有作為父元素的第一個子元素的span元素

[:last-child]
$("span:last-child")
所有作為父元素的最後一個子元素的span元素

[:only-child]
$("span:only-child")
所有作為父元素的唯一子元素的span元素

[:nth-child(n)]
$("li:nth-child(2)")
所有作為父元素的第2個子元素的li標籤(n從1開始算起)

[:nth-last-child(n)]
$("li:nth-last-child(2)")
所有作為父元素的倒數第2個子元素的li標籤

[:first-of-type]
$("p:first-of-type")
所有作為父元素的第一個p型別的子元素

[:last-of-type]
$("p:last-of-type")
所有作為父元素的最後一個p型別的子元素

[:only-of-type]
$("p:only-of-type")
所有作為父元素的唯一一個p型別的子元素

[:nth-of-type(n)]
$("li:nth-of-type(2)")
所有作為父元素的第2個li型別的子元素(n從1開始算起)

[:nth-last-of-type(n)]
$("li:nth-last-child(2)")
所有作為父元素的倒數第2個li型別的子元素
複製程式碼

偽類選擇器——根據包含、排除、可見、動畫或其他關係篩選元素

[:has(selector)]
$("ul:has(li.abc)")
所有包含類名為"abc"的li標籤的ul元素

[:not(selector)]
$("input:not(:text)")所有不是文字框的input元素

[:contains(text)]
$(":contains(abc)")
所有包含文字"abc"的元素

[:parent]
$(":parent")
所有包含子元素或文字內容(哪怕是空格或換行)的元素

[:empty]
$(":empty")
所有沒有子元素和文字內容(哪怕是空格或換行)的元素

[:visible]
$(":visible")
所有可見的元素

[:hidden]
$(":hidden")
所有不可見的元素(包括type="hidden"的input元素)

[:header]
$(":header")
所有標題標籤:h1~h6

[:animated]
$(":animated")
所有正在執行動畫效果的元素

[:focus]
$(":focus")
當前獲得焦點的元素

[:root]
$(":root")
當前文件的根元素(html元素)

[:target]
$(":target")
id屬性等於當前頁面URI中的hash碼值的元素

[:lang(language)]
$(":lang(en)")
所有lang屬性以"en"為字首的元素
複製程式碼

屬性相關選擇器

[[attribute]]
$("[href]")
所有帶有href屬性的元素

[[attribute=value]]
$("[name=uid]")
所有name="uid"的元素

[[attribute!=value]]
$("[name!=uid]")
所有name屬性的值不等於"uid"的元素

[[attribute^=value]]
$("[name^=uid]")
所有name屬性的值以"uid"開頭的元素

[[attribute$=value]]
$("[src$='.gif']")
所有src屬性以".gif"結尾的元素

[[attribute|=value]]
$("[name|=uid]")
name屬性的值等於"uid",或以"uid-"開頭的所有元素

[[attribute~=value]]
$("[name~='uid']")
name屬性的值包含給定的單詞"uid"的所有元素("uid"與其他詞以空格分隔)

[[attribute*=value]]
$("[name*=uid]")
所有name屬性的值包含"uid"的元素
複製程式碼

偽類選擇器——表單相關

[:input]
$(":input")
所有input、select、textarea和button標籤

[:text]
$(":text")
所有type="text"的input元素

[:password]
$(":password")
所有type="password"的input元素

[:radio]
$(":radio")
所有type="radio"的input元素

[:checkbox]
$(":checkbox")
所有type="checkbox"的input元素

[:submit]
$(":submit")
所有type="submit"的input和button元素

[:reset]
$(":reset")
所有type="reset"的input元素和button元素

[:button]
$(":button")
所有button標籤(不區分type)和type="button"的input元素

[:image]
$(":image")
所有type="image"的input元素

[:file]
$(":file")
所有type="file"的input元素
複製程式碼

偽類選擇器——表單狀態相關(表單控制元件是指input、select、textarea、button、option元素)

[:enabled]
$(":enabled")
所有可用(沒有disabled屬性)的表單控制元件元素

[:disabled]
$(":disabled")
所有禁用(帶有disabled屬性)的表單控制元件元素

[:selected]
$(":selected")所有被選中的option元素

[:checked]
$(":checked")
所有被選中的radio、checkbox和option元素複製程式碼


相關文章