【问题标题】:JS/DOM selector scopingJS/DOM 选择器作用域
【发布时间】:2009-10-01 02:00:43
【问题描述】:

在使用 JS 操作 DOM 时是否可以有某种 Id 作用域?

我使用 jQuery 作为我的 JS 框架。

例如:

是否有任何机制允许选择第一个的 someDiv 子级或第二个的 someDiv 子级,或者页面上的所有 id 都必须是唯一的?

我知道这可以使用类来实现(jQuery 选择器是 .first>.someDiv),但是对于 id 属性也可以吗?


编辑:为了澄清,这里有一个更完整的例子:

文件picture_editor.php:

...

此编辑器的 JS 脚本,需要操作 picture_id

...

文件 main_view.php:

...

操作 picture_id 的脚本

...

包括(picture_editor.php);

...

现在,如果 picture_editor 包含在一个文件(如 main_view)中,该文件具有与 picture_editor 中的元素具有相同 id 的元素,则某处将停止工作(无论是 picture_editor 或 main_view 中的某些脚本,或两者兼而有之)。 问题:你如何解决这个问题?

【问题讨论】:

  • 我无法理解提出此类问题的意义,您可以在几分钟内通过创建一些示例页面并使用 jquery 选择器在 firebug 控制台中玩弄来检查它。
  • 那你是怎么做的呢?我知道这行不通。但是如果你包含来自其他地方的文件,仍然需要范围
  • 可能我没有正确理解你的问题,请详细说明并给出清晰的例子。
  • 请看我上面的编辑

标签: javascript jquery css-selectors


【解决方案1】:

HTML id 属性、定义和 用法:

  • id 属性为 HTML 元素指定一个唯一的 id。
  • ID 在 HTML 文档中必须是唯一的。
  • id 属性可由 JavaScript(通过 HTML DOM)或
    使用 CSS 进行更改或设置样式
    具有指定 id 的元素。

来自http://www.w3schools.com/tags/att_standard_id.asp

【讨论】:

    【解决方案2】:

    所有 id 都必须是唯一的,所以我不这么认为。

    【讨论】:

      【解决方案3】:

      如果您的ids 不是唯一的,那么您的页面不是有效的 HTML。如果您有非唯一的id,请重新考虑您的结构。

      至于jQuery是否支持,不太可能,因为它永远不会满足这种情况。

      【讨论】:

      • 不幸的是,许多(大多数?)浏览器工作“足够好”,允许有多个具有相同 ID 的元素,并且通过 ID 选择一个元素“有效” (但不清楚是否跨浏览器选择了相同的元素)使用 document.getElementById。
      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2014-05-23
      • 2015-06-21
      • 2012-01-21
      • 2013-01-30
      相关资源
      最近更新 更多