【问题标题】:jQuery (anti-)pattern: building selectors with string manipulationjQuery(反)模式:使用字符串操作构建选择器
【发布时间】:2009-10-14 16:35:53
【问题描述】:

我经常发现自己使用字符串操作(拆分、搜索、替换、连接、+、连接)构建选择器。

好还是坏?

【问题讨论】:

  • 你能举一些具体的例子来说明你在做什么吗?

标签: javascript jquery design-patterns anti-patterns


【解决方案1】:

这有什么问题?有哪些替代方案——只是将它们硬编码为单个字符串?但是您可以在您的站点上使用约定来组织布局。如果你只是在一个地方定义选择器组件,并使用它来构建一个选择器,听起来这会比遍历所有代码并在它出现的任何地方进行搜索替换要少。

我会说最好假设你有其他组织的字符串(在一个地方定义,在多个地方使用)。

【讨论】:

    【解决方案2】:

    这与您的问题有些无关,但是:

    我建议的一件事是谨慎使用基于后代或子选择器(例如:'div.product > span.price')。通常,UI 部分正在被重新组织、移动或被其他东西包裹。发生这种情况时,基于后代的选择器会中断。

    要记住的另一件事是,基于属性的选择器(例如:'input[value="Login"]')在处理本地化内容时通常很脆弱(如果属性值已本地化)。

    【讨论】:

    • 出于好奇,您所说的“UI 部分正在被重组、移动或被其他东西包裹”是什么意思?这种重组何时以及为何发生?你的意思是你需要跟踪你在一系列复杂的链式操作过程中所做的突变的影响吗?
    • 我的意思是该元素不能再是另一个元素的子元素,而是孙子元素(如果它被其他东西包裹)。一个元素也可以“改变”它的父元素——或者在被移动到另一个地方之后,或者如果父标签/类/id被改变了。标记中的所有这些变化都会影响依赖于文档结构的选择器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2011-11-10
    • 2011-06-08
    • 2018-07-14
    • 1970-01-01
    • 2012-10-09
    • 2023-03-24
    相关资源
    最近更新 更多