gpt4 book ai didi

javascript - 从任何 jquery 选择器字符串创建元素的最有效方法

转载 作者:行者123 更新时间:2023-11-28 00:34:59 25 4
gpt4 key购买 nike

我需要做什么

我想创建一个与任何选择器字符串匹配的元素

简单示例。

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的选择器引擎来做到这一点,因为再次分析选择器字符串并提取其属性似乎很冗长。

非常感谢

最佳答案

这对于所有选择器来说都是不可能的,但如果您确定提供的选择器可以工作,我会从这样的开始:

function createElement(selector) {
var element = document.createElement('div');

if (/^[a-z][a-z0-9\-]*/.test(selector)) {
element = document.createElement(selector.match(/^[a-z][a-z0-9\-]*/)[0]);
}

// Wrap in jquery
element = $(element);

// Find the classes
if (/\.([a-z][a-z0-9\-]*)/g.test(selector)) {
selector.match(/\.([a-z][a-z0-9\-]*)/g).forEach(function (class) {
element.addClass(class.substr(1));
});
}

// Find the id
if (/#([a-z][a-z0-9\-]*)/.test(selector)) {
element.attr('id', selector.match(/#([a-z][a-z0-9\-]*)/)[0]);
}

// Find the attributes
if (/\[([a-z][a-z0-9\-]*)=\'(.+)\'\]/) {
var match = /\[([a-z][a-z0-9\-]*)=\'(.+)\'\]/.exec(selector);

element.attr(match[1], match[2]);
}

return element;
}

关于javascript - 从任何 jquery 选择器字符串创建元素的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com