1. 程式人生 > >JQuery 模糊匹配(JQuery 選擇器模糊匹配、選擇指定屬性是以給定字串開始的元素 )

JQuery 模糊匹配(JQuery 選擇器模糊匹配、選擇指定屬性是以給定字串開始的元素 )

我們在使用 JQuery 的時候,有時需要選擇多個屬性以指定字串開頭或者包含某些字串的時候。

比如,我們一個頁面中,所有的被罰款人的 input 輸入框的 id 或者 name命名規則如下:

都以 beFineMan 開頭,然後後面依次加上不同的數字,例如這樣

<input id="beFinedMan1" name="beFinedMan1" />
<input id="beFinedMan2" name="beFinedMan2" />
<input id="beFinedMan3" name="beFinedMan3" />

那麼,選擇所有的被罰款人輸入框中的 value,我們就需要使用模糊匹配。

JQuery API 提供的模糊匹配方法常用的有如下幾個:

1、選擇指定屬性值等於給定字串或以該字串為字首(該字串後跟一個連字元“-” )的元素

(Attribute Contains Prefix Selector [name|="value"])                                                           例子請見部落格底部 例1.

2、選擇指定屬性具有包含一個給定的子字串的元素。(選擇給定的屬性是以包含某些值的元素)

(Attribute Contains Selector [name*="value"] )                                                                    例子請見部落格底部 例2.

3、選擇指定屬性用空格分隔的值中包含一個給定值的元素

(Attribute Contains Word Selector [name~="value"] )                                                         例子請見部落格底部 例3.

4、選擇指定屬性是以給定值結尾的元素。這個比較是區分大小寫的

(Attribute Ends With Selector [name$="value"] )                                                                                    例子請見部落格底部 例4.


5、選擇指定屬性是給定值的元素

(Attribute Equals Selector [name="value"])                                                                          例子請見部落格底部 例5.

6、選擇不存在指定屬性,或者指定的屬性值不等於給定值的元素

(Attribute Not Equal Selector [name!="value"])                                                                    例子請見部落格底部 例6.

7、選擇指定屬性是以給定字串開始的元素

(Attribute Starts With Selector [name^="value"])                                                                 例子請見部落格底部 例7.

例1:
jQuery( "[attribute|='value']" )
attribute: 一個屬性名.
value: 一個屬性值,引號是可選的. 可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢hreflang屬性值是英語的所有連結

<!DOCTYPE html>
<html>
<head>
    <style>
a { display: inline-block; }
    </style>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<a href="example.html" hreflang="en">Some text</a>
<a href="example.html" hreflang="en-UK">Some other text</a>
<a href="example.html" hreflang="english">will not be outlined</a>
<script>
$('a[hreflang|="en"]').css('border','3px dotted green');
</script>
</body>
</html>
結果如下:

例2:
jQuery( "[attribute*='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有 input 的 name 屬性中帶有 'man' 的元素,並將它們的值設為一些文字

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<input name="man-news" />
<input name="milkman" />
<input name="letterman2" />
<input name="newmilk" />
<script>$('input[name*="man"]').val('has man in it!');</script>
</body>
</html>
結果如下:

例3:
jQuery( "[attribute~='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有屬性中含有 'man' 這個單詞的文字框,並且修改其文字值

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<input name="man-news" />
<input name="milk man" />
<input name="letterman2" />
<input name="newmilk" />
<script>$('input[name~="man"]').val('mr. man is in it!');</script>
</body>
</html>
結果如下:

例4:
jQuery( "[attribute$='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有的屬性名稱以“letter”的結束,並把他們的文字輸入

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<input name="newsletter" />
<input name="milkman" />
<input name="jobletter" />
<script>$('input[name$="letter"]').val('a letter');</script>
</body>
</html>
結果如下:

例5:
jQuery( "[attribute='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有屬性值為 'Hot Fuzz' 的 input 元素,並且將跟在它後面的 span 元素中的文字修改成 " Hot Fuzz"

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div>
    <label>
        <input type="radio" name="newsletter" value="Hot Fuzz" />
        <span>name?</span>
    </label>
</div>
<div>
    <label>
        <input type="radio" name="newsletter" value="Cold Fusion" />
        <span>value?</span>
    </label>
</div>
<div>
    <label>
        <input type="radio" name="newsletter" value="Evil Plans" />
        <span>value?</span>
    </label>
</div>
<script>$('input[value="Hot Fuzz"]').next().text(" Hot Fuzz");</script>
</body>
</html>
結果如下:

例6:
jQuery( "[attribute!='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有 name 屬性不是 'newsletter' 的元素,並在其後的 span 中追加 '; not newsletter' HTML

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div>
    <input type="radio" name="newsletter" value="Hot Fuzz" />
    <span>name is newsletter</span>
</div>
<div>
    <input type="radio" value="Cold Fusion" />
    <span>no name</span>
</div>
<div>
    <input type="radio" name="accept" value="Evil Plans" />
    <span>name is accept</span>
</div>
<script>$('input[name!="newsletter"]').next().append('<b>; not newsletter</b>');</script>
</body>
</html>
結果如下:

例7:
jQuery( "[attribute^='value']" )
attribute: 一個屬性名.
value: 一個屬性值,可以是一個不帶引號的一個單詞或帶一個引號的字串。

例:查詢所有 input 中 name 屬性以 'news' 開頭的元素,並將它們的值設定為一些文字

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<input name="newsletter" />
<input name="milkman" />
<input name="newsboy" />
<script>$('input[name^="news"]').val('news here!');</script>
</body>
</html>
結果如下: