我有以下代碼。它的工作很好,但我不知道如果第三行是最佳做法。當元素myID在頁面上時,其屬性被改變。然而,它並不是每一頁都經常這樣做。這對我來說似乎是無害的,但是有沒有什麼缺點我不知道?jQuery選擇器不在每個頁面上的元素。
$(document).ready(function() {
if ($(window).width() < 700) {
$('#myID').attr('size', 1)
}
});
我有以下代碼。它的工作很好,但我不知道如果第三行是最佳做法。當元素myID在頁面上時,其屬性被改變。然而,它並不是每一頁都經常這樣做。這對我來說似乎是無害的,但是有沒有什麼缺點我不知道?jQuery選擇器不在每個頁面上的元素。
$(document).ready(function() {
if ($(window).width() < 700) {
$('#myID').attr('size', 1)
}
});
執行任何動作之前,從jquery attr doc
的.attr()方法僅爲匹配集合中的第一個元素 獲取屬性值。要單獨獲取每個元素的值, 使用循環構造,如jQuery的.each()或.map()方法。
.attr()
方法嘗試在jQuery對象的第一個元素上設置屬性。如果jquery對象爲空,則不會發生任何事情。
我編輯過,因爲上一個答案不正確。 'Undefined'是GET attr(而不是SET)返回的值。 –
你可以,只是可以肯定的,檢查對象的存在,你就可以
$(document).ready(function() {
if ($(window).width() < 700 && $('#myID').length) {
$('#myID').attr('size', 1);
}
});
這對我來說沒有問題。因爲對於jQuery對象中的每個元素都調用了attr方法。如果jQuery對象爲空則沒有問題 –
我問的唯一原因是我認爲我在IE中使用jQuery選擇器來查看每個頁面上不存在的元素時,會看到一些IE警告標誌。這是在一個不同的項目,但我不記得100%。 – Evans
我認爲'attr()'對它的結果做了一個foreach,所以不應該受到傷害。如果jQuery做出了一個導致錯誤的選擇器,那就太奇怪了,因爲它是最基本的操作之一。 – EricG