【发布时间】:2015-02-20 21:30:05
【问题描述】:
我需要做什么
我想创建一个匹配任何选择器字符串的元素
快速示例。
var targetString = "a.exaggerated#selector[data-myattr='data-here']";
var targetEl = $(targetString);
if(!targetEl.length){
var newEl = //create target
$(body).append(newEl);
}
输出
<body>
<a class="exaggerated" id="selector" data-myattr="date-here"></a>
</body>
为什么
我有一些按钮,当点击它们时,它们会根据其数据属性执行不同的任务。
其中之一是data-target。我希望能够使用任何 sizzlejs/jquery 选择器作为目标,如果 dom 中不存在目标元素,则创建它。
例如
<button data-create-target="true" data-target=".mytarget">clickme</button>
<button data-create-target="true" data-target="a.[data-type='popup']">clickme</button>
我希望有一种方法可以使用 jquery 的选择器引擎来执行此操作,因为再次分析选择器字符串并提取其属性似乎很冗长。
非常感谢
【问题讨论】:
-
许多字符串只能用作选择器而不是创建器,因此使用 any 选择器实现您想要的效果是不现实的。
-
您需要编写一个解析器,将
a.exaggerated#selector[data-myattr='data-here']转换为<a id="selector" class="exaggerated" data-myattr="data-here"></a>。这基本上是将 Jade 之类的东西(不完全是)编译成 HTML。
标签: javascript jquery sizzle