想让你的javascript知道一个特定的dom节点对应于数据库中的记录似乎很常见.你是怎么做到的?
我看到的一种常见方法是使用类的类和id的id:
虽然这有一个轻微的HTML标准问题 - 如果您在页面上有多种类型的记录,您可能最终会复制ID.但那没有什么坏处,是吗?
另一种方法是使用数据属性:
这解决了重复的ID问题,但它确实意味着您必须处理属性而不是ID,这有时更加困难.你们有什么感想?
1> Peter Hilton..:请注意,ID不能以数字开头,因此:
是无效的HTML.请参阅HTML中id属性的有效值是什么?
在你的情况下,我会使用ID
thing5
或thing.5
.
我只想指出,现在一个ID可能以数字开头.供将来用户参考.
2> John Milliki..:// Get thing on the page for a particular ID var myThing = select("#myapp-thing-5"); // Get ID for the first thing on the page var thing_id = /myapp-thing-(\d+)/.exec ($('.thing')[0].id)[1];
3> keparo..:你将放弃对DOM的一些控制
没错,什么都不会爆炸,但这是不好的做法.如果你在页面上放置重复的id,那么当你尝试通过id访问元素时,你基本上无法确定你得到了什么.
var whoKnows = document.getElementById('duplicateId');根据浏览器的不同,行为实际上是不同的.在任何情况下,您都可以将classNames用于重复值,并且您将完全避免这个问题.
浏览器会尝试忽略标记中的错误,但事情会变得混乱而且更加困难.最好的办法是保持标记有效.您可以在className中描述元素的类型及其唯一的数据库ID.您甚至可以使用多个classNames来区分它们.有很多有效的可能性:
要么
要么
要么
这些都是完全合法且有效的XHTML片段.请注意,在最后一个片段中,我仍然有一个id为我工作,这很好.通过他们的id访问元素非常快速和简单,所以你绝对希望能够尽可能地利用它.
您已经在javascript中花费了足够的时间,确保您拥有正确的值和类型.在页面上放置重复的ID会让事情变得更难.如果您能找到编写符合标准的标记的方法,它有许多实际的好处.
4> AnthonyWJone..:根据标准,ID应该是唯一的,虽然大多数浏览器在递交重复ID时不会进行barf,但依靠总是这样的情况并不是一个好主意.
通过向ID添加类型名称来使ID唯一可用,但您需要询问为什么需要它.当需要找到元素时,赋予元素id是非常有用的,getElementById非常快.大多数浏览器在加载DOM时会构建ID索引的原因很快.但是,如果您拥有数以万计的ID,而您实际上并不需要在getElementById之类的东西中使用,那么您将承担从未支付过的成本.
我想你可能会发现大多数时候你想要在元素或其子元素触发的事件中使用对象ID.在这种情况下,我将在元素上使用其他属性,而不是ID属性.
我会留下class属性去做它的意图,而不是用识别职责重载它.
推荐阅读
如何解决《OpenCV鱼眼校准会削减过多的图像》经验,为你挑选了0个好方法。 ... [详细] 如何解决《Polymer1.2FIREBASEWARNING:用户回调抛出了异常》经验,为你挑选了1个好方法。 ... [详细] 如何解决《SQLServer备份文件过度增长》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Python:itertools.product()的更快替代方案?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《从调用方法并行执行方法》经验,为你挑选了0个好方法。 ... [详细] 如何解决《IndexError:索引10000超出了轴0的大小为10000的范围》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Java8函数<String,Void>vsConsumer<String>》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Swift_TransportException·无法与主机smtp.sendgrid.net建立连接[连接超时#110]》经验,为你挑选了1个好方法。 ... [详细] 如何解决《GIT分支机构如何运作?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何使用JavaScript操作HTML元素》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在生产中运行railsconsole而不执行弹簧?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用Nightwatch访问iFrame元素》经验,为你挑选了2个好方法。 ... [详细] 如何解决《Swing图形不会显示-Java》经验,为你挑选了1个好方法。 ... [详细] 如何解决《与"流媒体"实施相反》经验,为你挑选了0个好方法。 ... [详细] 如何解决《在Akka消息中发送期货好吗?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《检查列表Python中的特定数字》经验,为你挑选了1个好方法。 ... [详细] 如何解决《IIS8中的Websockets反向代理》经验,为你挑选了2个好方法。 ... [详细] 如何解决《Bootstrap导航不会在仿真/真实设备上折叠》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用TOR浏览器绑定PythonSelenium》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Android使用MSGPackCore和JacksonMapper-解码未知类型的类变量》经验,为你挑选了0个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1在Angular JS Module中传递并获取DOM元素值
- 2AWS IoT - 通过.Net,REST和证书访问阴影
- 3相互测试所有值,并从结果矩阵中形成组
- 4如何将图书目录中的图书分配给各自的作者?
- 5如何更新/升级Facebook API版本?
- 6如何通过在张量流中使用softmax-output层并行(在神经网络中)确定多个标签?
- 7无法删除Azure App Service计划
- 8我应该使用哪个记录器来获取Cloud Logging中的数据
- 9从Kinect相机压缩RGB-D视频
- 10自Android 6 Marshmallow以来,javax.crypto.Cipher的工作方式不同
- 11启动未使用Xcode 7显示的图像
- 12app:stackFromEnd for RecyclerView无法在xml中运行?
- 13如何在Kibana中配置索引模式
- 14名称中的React native Image变量不起作用
- 15为什么使用dotenv库而不是解析ini文件?
- 16打印免费monad
- 17提取/读取React propTypes
- 18SBT - 如何禁用特定任务的插件(例如"包")
- 19一个小游戏/测验:你看到我的价值观了吗?(解释十六进制值)
- 20"粘性"选择Angular应用程序
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有