2011-03-07 43 views
2

我已經使用的ID和標題,但我需要通過2個比特來解析...jQuery attr是否允許非標準?

$(this).attr("title"); $(this).attr("id"); 

請問$(this).attr("custom1");工作?

+3

你可以嘗試,並告訴我們:O) – 2011-03-07 18:12:41

回答

3

是的,順便說一句,你可以一次設置多個屬性:

$('.myselector').attr({ 
src: 'thefile.gif', 
width: 200, 
height: 300 }); 
2

是的,你可以在HTML5中使用它所有的data-attributes。哪種方式可以添加額外的屬性?

此外,所有data-*屬性被自動添加到jQuery的data()對象爲方便

1

如果你只是想關聯(通過名稱)的一些數據與DOM元素,你最好使用」。數據() 「方法:

$(this).data('custom1', someValue); 

的」。資料()」 API使得HTML5式 「數據foo」 的屬性編碼成訪問的HTML:

var foo = $(this).data('foo'); // gets the "data-foo" attribute value from element 
+0

這是所有點的清晰的解決方案。所以你不禮貌你的HTML標記與無效屬性。也許你也可以在這裏查看api:http://api.jquery.com/data/ – onigunn 2011-03-07 18:16:38

+0

@asrijaal:'.data'在所有點上都不是更清潔的。使用'.data'在讀寫之間缺乏對稱性:'.data('custom','foo')'不會將'data-custom =「foo」'放入DOM中。 '.attr'沒有這個問題。您寫入的任何[原始]都可以在DOM中訪問。 – 2011-03-07 18:48:00

+0

@Roatin Marth是的,這是真的,但一致使用「.data()」我不明白爲什麼它很重要。由於內存使用原因,將JavaScript對象直接附加到DOM元素是有風險的,因爲(主要在IE中)DOM元素的JavaScript附錄不能被DOM收集器垃圾收集。 – Pointy 2011-03-07 18:49:37

0

是的,但它不是一個好主意。

如果您想在元素上存儲某些數據,請更好地使用.data('foo', 'bar');

+0

爲什麼它不是一個好主意? .data()是否在帶有html5文檔類型和IE8的頁面上工作? .attr()似乎對我很好,雖然我好奇,爲什麼.data是更好的選擇。謝謝! – Chris 2014-01-30 04:16:58

0

是的,你可以做的最好的事情就是測試它。

<script> 
$(document).ready(function() { 
    // Handler for .ready() called. 
    alert("custom1 = " + $("#myField").attr("custom1")); 
}); 
</script> 

<div id="myField" custom1="My Custom Field"></div> 

現在,你破壞了標記,所以我建議存儲ALT標籤或名稱標籤您的信息,以防止()。

相關問題