没有办法避免这种情况。它们之所以耦合是因为它们彼此交互。如果您的JavaScript打算进行任何类型的DOM操作,则需要一种引用DOM的方法。
有很多约定。
级别2 DOM API提供了getElementById,getElementByTagName和getElementsByName方法。时至今日,这些都是任何类型的DOM遍历的主力军。所有其他更高级的jQuery选择器最终都会解析为这些组合,并且/或者直接遍历每个DOM节点(这是执行getByClassName的方法)。
没有其他快捷方式。Javascript需要知道做什么和在哪里。通常,如果元素具有仅与脚本编写相关的ID或类,那么很多人会在其前缀上加上js-
其他明显的标志。
另一个较新的约定是数据属性选择。
<ul data-myapp-sortable="true">
jQuery('[data-myapp-sortable]').makeSortable();
数据属性通常用于脚本编写目的,使用它进行选择很有意义。缺点是,这比使用getElementById()慢。
另一种方法是angularJS使用的方法,该方法创建一个视图模型。在此约定中,任何一种脚本功能均由诸如ng-disabled
ng-href
等等的特殊指定属性指定。您无需在JavaScript中添加选择器。HTML文档成为脚本内容和脚本编写方式的主要授权,而javascript则可以对其进行抽象处理。这是一个很好的方法,但是显然比以前的方法具有更高的学习曲线。同样,必须考虑性能。
但是,永远不要以为您可以编写交互式HTML和javascript,并且以某种方式使这两个部分彼此都不了解。更多关于如何将引用限制为依赖项。