按屬性選擇元素 [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[attr]").length可能是一個更好的選擇。




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



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

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




我已經按照上面所描述的那樣創建了具有預期行為的npm包。

鏈接到[npm][github]

用法很簡單。 例如:

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

返回true。

和camelcase一起工作。