Javascript jQuery(反)模式:使用字符串操作构建选择器

Javascript jQuery(反)模式:使用字符串操作构建选择器,javascript,jquery,design-patterns,anti-patterns,Javascript,Jquery,Design Patterns,Anti Patterns,我发现自己经常使用字符串操作(拆分、搜索、替换、concat、+、连接)来构建选择器 好还是坏?这有什么不对?有哪些替代方案-只是将它们硬编码为单个字符串?但是,您可以在站点上使用约定来组织布局。如果您只在一个位置定义选择器组件,并使用它来构建选择器,听起来这比遍历所有代码并在它显示的任何地方执行搜索替换要容易得多 我想说,假设字符串以其他方式组织(在一个位置定义,在多个位置使用)是好的。这与您的问题有些无关,但是: 我建议的一件事是对基于后代或子代的选择器要谨慎(例如:'div.product

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


好还是坏?

这有什么不对?有哪些替代方案-只是将它们硬编码为单个字符串?但是,您可以在站点上使用约定来组织布局。如果您只在一个位置定义选择器组件,并使用它来构建选择器,听起来这比遍历所有代码并在它显示的任何地方执行搜索替换要容易得多


我想说,假设字符串以其他方式组织(在一个位置定义,在多个位置使用)是好的。

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

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


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

你能举一些具体的例子说明你在做什么吗?出于好奇,你所说的什么意思“用户界面部件正在重新组织、移动或用其他东西包装"? 何时以及为什么会发生这种重组?你的意思是你需要跟踪在一系列复杂的链式操作过程中发生的突变的影响吗?我的意思是,元素不再是另一个元素的子元素,而是一个孙子(如果它被其他东西包裹的话)。一个元素也可以“改变”它的父元素——在被移动到另一个地方之后,或者如果父标记/类/id被改变了。标记中的所有这些更改都会影响依赖于文档结构的选择器。