[Jquery] 按屬性選擇元素


Answers

if ($('#A').attr('myattr')) {
    // attribute exists
} else {
    // attribute does not exist
}

編輯:

myattr存在時,以上將落入else myattr ,但是是一個空字符串或“0”。 如果這是一個問題,你應該明確地測試undefined

if ($('#A').attr('myattr') !== undefined) {
    // attribute exists
} else {
    // attribute does not exist
}
Question

我有一個複選框與生成的ID集合,其中一些有一個額外的屬性。 是否有可能使用JQuery來檢查一個元素是否具有特定的屬性? 例如,我可以驗證下列元素是否具有屬性“myattr”? 屬性的值可能會有所不同。

<input type="checkbox" id="A" myattr="val_attr">A</input>

例如,如何獲得具有此屬性的所有復選框的集合,而無需逐個檢查? 這可能嗎?




在JavaScript中,...

null == undefined

...返回true *。 這是=====之間的區別。 此外, undefined的名稱可以定義(它不是像null這樣的關鍵字),所以你最好通過其他方式檢查。 最可靠的方法可能是比較typeof運算符的返回值。

typeof o == "undefined"

儘管如此,與null比較應該在這種情況下工作。

*假設undefined實際上是未定義的。




$("input#A").attr("myattr") == null



$("input[attr]").length可能是一個更好的選擇。




如上所述,我已經創建了具有預期行為的npm包。

鏈接到[npm][github]

用法很簡單。 例如:

<p id="test" class="test">something</p>
$("#test").hasAttr("class")

返回true。

也適用於camelcase。




除了選擇具有屬性$('[someAttribute]')$('input[someAttribute]')所有元素外,您還可以使用函數對對象執行布爾檢查,例如在點擊處理函數中:

if(! this.hasAttribute('myattr') ) { ...