2012-12-17 72 views
0

我有以下代碼。它的工作很好,但我不知道如果第三行是最佳做法。當元素myID在頁面上時,其屬性被改變。然而,它並不是每一頁都經常這樣做。這對我來說似乎是無害的,但是有沒有什麼缺點我不知道?jQuery選擇器不在每個頁面上的元素。

$(document).ready(function() { 
     if ($(window).width() < 700) { 
      $('#myID').attr('size', 1) 
     } 
    }); 
+0

這對我來說沒有問題。因爲對於jQuery對象中的每個元素都調用了attr方法。如果jQuery對象爲空則沒有問題 –

+0

我問的唯一原因是我認爲我在IE中使用jQuery選擇器來查看每個頁面上不存在的元素時,會看到一些IE警告標誌。這是在一個不同的項目,但我不記得100%。 – Evans

+0

我認爲'attr()'對它的結果做了一個foreach,所以不應該受到傷害。如果jQuery做出了一個導致錯誤的選擇器,那就太奇怪了,因爲它是最基本的操作之一。 – EricG

回答

3

執行任何動作之前,從jquery attr doc

的.attr()方法僅爲匹配集合中的第一個元素 獲取屬性值。要單獨獲取每個元素的值, 使用循環構造,如jQuery的.each()或.map()方法。

.attr()方法嘗試在jQuery對象的第一個元素上設置屬性。如果jquery對象爲空,則不會發生任何事情。

+0

我編輯過,因爲上一個答案不正確。 'Undefined'是GET attr(而不是SET)返回的值。 –

2

你可以,只是可以肯定的,檢查對象的存在,你就可以

$(document).ready(function() { 
    if ($(window).width() < 700 && $('#myID').length) { 
     $('#myID').attr('size', 1); 
    } 
}); 
相關問題