【发布时间】:2012-09-21 13:30:10
【问题描述】:
我希望覆盖基本的 jQuery 选择器,以便任何 jQuery 选择器中的所有 CSS 类 ($('.classname')),包括 .find(.classname)、.parents(.classname) 等,都以“命名空间”为前缀。在上面的示例中,我的 jQuery 代码看起来像 $('.classname'),但它会被转换为 $('.SomeCssNamespace_classname')。
$('.classname') 选择器将匹配的 HTML 如下所示:<div class="SomeCssNamespace_classname" />
最重要的是我必须添加智能,可能是以regex 的形式,这只会对类名执行此操作,而不是对 id 或标签选择器。例如$('#someId') 不会被翻译成 $('#SomeCssNamespace_someId')。
此外,jQuery.addClass() 和 jQuery.removeClass() 方法必须被覆盖以添加相同的命名空间。
【问题讨论】:
-
你的问题到底是什么?
-
@Lian:我认为 OP 想知道在指定类选择器时如何扩展 jQuery 默认选择器行为,以便 jQuery 接受
$('.className')但能够将该选择器与带有 @ 的元素匹配987654335@ 代替/或以及(不确定)class="className"。基本上让 jQuery 自动预先添加namespace_以匹配选择器。此外,OP 希望在使用类名作为输入的任何方法中复制该行为,例如addClass或removeClass。我假设这就是 OP 正在寻找的。span> -
除非我没有看到任何东西,否则我认为您最好的选择是下载您想要使用的 jQuery 文件的版本并直接在源中更新它并使用您自己的自定义副本。
-
CSS namespaces 和你这里的完全不同。
-
@FrançoisWahl 是的,您对这个问题有很好的把握。澄清不需要支持。如果可能的话,我想远离编辑 jQ 源代码,但意识到这可能是必要的。感谢您的回复!
标签: jquery css jquery-selectors