Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以将自己的属性添加到HTML元素中吗?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 可以将自己的属性添加到HTML元素中吗?

Javascript 可以将自己的属性添加到HTML元素中吗?,javascript,jquery,html,Javascript,Jquery,Html,可能的重复项: 在我正在进行的当前学习项目中,我需要添加一个值为数字的属性。起初,我想用“id”来实现这个目的,但后来发现这样做并不好 如果我创建自己的属性,比如说“mesid”,并为其指定一个数字值,如“12”、“6”等,可以吗 这就是为什么我要这样做,这样,如果我完全做错了,你可以纠正我: 我需要在JavaScript中访问这个数字(使用jQuery)。仅获取属性的值很容易,但从“m12”或“m6”之类的字符串中提取数值却很困难。(我是JavaScript领域的初学者。)否-。关于这一点

可能的重复项:

在我正在进行的当前学习项目中,我需要添加一个值为数字的属性。起初,我想用“id”来实现这个目的,但后来发现这样做并不好

如果我创建自己的属性,比如说“mesid”,并为其指定一个数字值,如“12”、“6”等,可以吗

这就是为什么我要这样做,这样,如果我完全做错了,你可以纠正我:
我需要在JavaScript中访问这个数字(使用jQuery)。仅获取属性的值很容易,但从“m12”或“m6”之类的字符串中提取数值却很困难。(我是JavaScript领域的初学者。)

否-。

关于这一点,有很多讨论:

最后,我来到了一个相信数据属性是最好的方法的阵营。它们被引入HTML5以避免名称冲突。本质上,如果要存储任何与数据相关的内容,只需在属性名称前加上“data-”:

<div class="user" data-userid="5"></div>


整个事情的唯一缺点是XHTML不会验证,但我真的不在乎这些东西。(没错,我说了)

在HTML5中,您可以添加任何以
数据-
开头的属性,例如


如果您添加自己的属性,HTML 4和XHTML 1将不会生效,但除此之外,如果您选择足够唯一的属性名称,则不会发生任何不好的事情(因此它不会与任何当前或未来的HTML属性冲突)。

我使用自定义属性,并且由于我检查的所有浏览器都支持它们,因此我认为使用它们并不坏。您还可以使用自定义HTML标记来模拟HTML5,并进行一些IE攻击,所以如果属性不需要任何攻击,为什么不使用属性呢

无论如何,您可以在这里阅读类似的讨论:

这不是一个确定的答案,但在过去我不得不这么做,我可以说这不仅效果很好,而且跨浏览器友好。

正如您所知,您可以轻松地从m12或m6之类的字符串中提取ID,我会这样做:

//name the IDs m_12, m_3 etc
var number = $('#someElement').attr('id').split('_')[1];
或者,如果说,您有一组ID中带有数字的链接,如上所述,并且所有链接都有
clickMe
类:

$('a.clickMe').click(function() {
    alert($(this).attr('id').split('_')[1]);
});

如果使用jQuery,则可以使用.data存储针对元素的自定义信息

自定义属性的缺点是:

  • IE6创建额外的对象来存储自定义的“expando”属性,这些属性有泄漏的倾向,特别是如果它们是通过脚本创建的

  • 验证问题


如果我只是想找回一个ID,我通常就是这样做的,但有时不止这些。我希望我只能投一次票:)仇恨者-我说错了什么?若网站并没有通过W3的验证,那个么它是好的吗?我之所以投这个票,只是因为我觉得这是一个真实的答案;尽管我冒昧地猜测,否决票是由于缺乏解释。不,我认为仅仅提供链接是不够的。我相信你至少应该总结一下你链接到的页面,即使你不想解释你自己。@Arnis:可能是,可能不是,但是在你的“答案”中包含这么少量的文字对你来说有多困难?@ricebowl,我是一个程序员-赫尔曼特没有明确要求一个论点,而这个答案可以从理论上回答这个问题,并提供链接供参考。请将相关内容直接添加到您的答案中,因为这将防止进一步的链接腐烂。+1。我完全同意这种方法是一种有效的解决方案,它易于实现,不会破坏任何东西。在我的书中,实用主义战胜了理想主义。我同意这一点,因为它在今天起作用,而且在HTML5规范中,它可能在10年后起作用。它还保持数据独立于其他值(例如将其保留在
id
属性中,以后可能会因为其他原因而更改),同时仍将其保留在元素上。是的,HTML验证错误应该被视为问题的建议/指针,而不是必须修复错误(在这一过程中,我会对JSLint说同样的话,只是为了让事情变得更糟一些=)“是的,我说了”——第一步是承认它我正在使用ASP.NET MVC,我正在尝试使用html助手方法的htmlAttribs参数添加自定义属性“data mesid”:new{@class=“mcf”,data dd=html.AttributeEncode(m.ID)}。但它不起作用(语法问题)。我看到您在ASP.NET MVC标记中处于活动状态,请您帮助我如何操作?当然可以-用ASP.NET MVC标记询问另一个问题虽然您的回答看起来正确,但我认为这是一个太琐碎的问题。无论如何,我要为这个问题再提一个问题。。。