2011-03-07 36 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标签或名称标签您的信息,以防止()。

相关问题