簡體   English   中英

jQuery屬性選擇器的值周圍帶有引號不起作用

[英]jQuery attribute selector with quotes around value doesn't work

我有一個類名為.aa_ant的輸入,其中包含值1

現在,當我加載頁面時,我正在執行此操作(案例1):

alert($('.aa_ant[value*=1]').length )

它按預期輸出1

現在,我將其更改為(案例2):

alert($('.aa_ant[value*="1"]').length )

它停止工作。 另外,如果我將1更改為a它也會停止工作(情況1和2)。

我做錯了什么?

更新: .aa_ant是一個剔除控件:

<input  class='aa_ant' data-bind='value: aa_ant, readOnly: is_readonly' />

可能有問題嗎?

更新:使用length屬性,我想查看是否有任何包含該值的輸入元素(我不希望任何元素具有該值)。 另外,我知道我可以獲取所有.aa_ant元素並枚舉它們,以查看是否有人包含該值,但我想使用jquery-ish。

更新:這是供參考的實際解決方案:

if($('.aa_ant').filter(function(index) {
    if(this.value.indexOf("1") >=0) {
        return true ;
    }
    return false ;
}).length>0 ) {
    alert("Error");
}

謝謝您的幫助 !

您的控件似乎沒有value屬性。 如果未在標記中設置元素,則CSS屬性選擇器將無法讀取元素的屬性,這就是它失敗的原因。

這是jQuery實際不完全符合所宣傳的CSS規范的情況。 [value*=1]無論如何都起作用的唯一原因是,它不是有效的CSS選擇器,因此在現代瀏覽器中,它會跳過瀏覽器的本機Selectors API,而是使用jQuery的選擇器引擎,該引擎不支持帶引號的數字, 並且可以基於value屬性,即使value屬性沒有出現在標記中,也可以得到預期的結果。 其他選擇器[value*="1"][value*=a][value*="a"]都是有效的CSS,但不會與您的控件匹配,因為在選擇器中沒有value屬性標記,因此您沒有任何結果。

如果需要通過輸入控件的實際值查詢輸入控件,請查看是否可以通過其他方式標識它(Knockout.js是否為其提供ID?),否則必須進行一些DOM遍歷篩選 ,並使用.val()檢查其值,以獲取正確的元素。 選擇器應只用於查詢基於靜態屬性(即屬性不通常值變化),而不是動態的像valueinput元件。

使用.filter().val()快速示例:

$('.aa_ant').filter(function() { return $(this).val().indexOf('1') >= 0; });

您想通過.length屬性實現什么? .length將返回頁面上匹配選擇器的數量。

如果要查找輸入值的長度,則需要執行以下操作:

alert($('.aa_ant[value*="1"]').val().length)

這是您的示例工作: http : //jsfiddle.net/ptzVy/

這是一個如何獲得輸入長度的示例:

http://jsfiddle.net/J52Yr/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM