【问题标题】:Is there any justifiable value in multi-level/tree selectors when using jQuery or CSS?使用 jQuery 或 CSS 时,多级/树选择器是否有任何合理的价值?
【发布时间】:2012-03-08 10:56:10
【问题描述】:

除了保留某种结构化标记之外,在涉及 CSS 或 jQuery 时,是否有任何正当理由使用多级/树选择器。

我所说的多级/树选择器是什么意思:

$('#grand-parent > #parent > .child').doSomething();

#grand-parent #parent .child

我经常看到人们使用这种类型的选择,即使 DOM 中没有其他元素具有 .child 类,因此我想知道是否需要它/在场景中使用它的原因结束选择器 (.child) 只存在一次?

所以这不是主观的,而是一个可以有真实答案的问题;当我说需要或理由时,我的意思是诸如性能提升之类的东西,或者当没有以这种方式选择元素时可能发生的错误。

另外,作为一个附带问题,在 jQuery 选择中是否需要 > 大于号,因为我很确定我已经看到有和没有它的 CSS。

任何关于使用多级选择器的答案/解释将不胜感激;)。

大家好!

【问题讨论】:

    标签: javascript jquery css


    【解决方案1】:

    我总是对那些强烈主张“从脚本中分离标记”的人感到困惑,然后使用复杂的选择器来访问基于布局的元素。从样式的角度来看,使用复杂的选择器是有道理的,但即便如此,它们越复杂,就越难维护。

    【讨论】:

      【解决方案2】:

      您不需要 > 符号,因为我已经制作了没有它的选择器,例如 #MyID.Myclass,没有任何问题。至于性能,如果您不必遍历 DOM 中的所有内容即可获得控件,这是最佳选择,但是如果您所追求的只是一个类,则没有理由将其过滤掉。另一张海报关于创建易碎代码也是正确的。本地客户端的处理能力完成了繁重的工作,因此与可能出现的编程错误和复杂性相比,多花一毫秒的时间来获取数据并不是问题。

      【讨论】:

        【解决方案3】:

        有时候选择器涉及可嵌套元素:

        $('dl.main-list > dt').css('font-weight', 'bold');
        

        这样任何嵌套的<dl> 列表都不会被弄乱。

        但是,在我看来,在我看来,在我的示例之外对文档结构进行假设是非常脆弱的。

        【讨论】:

        • 是的,我可以理解您选择在同一个嵌套或多个嵌套中存在多个 HTML 元素的用途,例如ul > li。但是,如果用户定义的类是最父类的选择点(以我的特定编码风格),并且对列表和其他默认嵌套元素的依赖较低,我认为对我来说最好的方法是选择尽可能靠近节点,然后根据需要向上遍历树。
        猜你喜欢
        • 1970-01-01
        • 2022-12-20
        • 2019-08-09
        • 2013-06-03
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 2015-03-07
        • 1970-01-01
        相关资源
        最近更新 更多