从jQuery选择器创建DOM元素

从jQuery选择器创建DOM元素,jquery,dom,selector,Jquery,Dom,Selector,我想知道我是否可以创建一个元素,而不是通过jQuery选择器从DOM中选择一个元素 例如: $.create('#hello').insertAfter('#test'); 将产生以下结果: <div id="test">This element already existed in the DOM.</div> <div id="hello"></div> 用于: 显然,更复杂的操作,如:selected或:nth child或:not(

我想知道我是否可以创建一个元素,而不是通过jQuery选择器从DOM中选择一个元素

例如:

$.create('#hello').insertAfter('#test');
将产生以下结果:

<div id="test">This element already existed in the DOM.</div>
<div id="hello"></div>
用于:


显然,更复杂的操作,如:selected或:nth child或:not()以及所有这些都不需要实现

有人知道解决方案吗

谢谢。

创建

试一试

使用以下功能:

createElement('<div id="test" class="a b"></div>', 'body');

只需将html标记插入其中即可

$("<div id='hello'></div>")
$(“”)
有关更多详细信息,请参见此处

我看不出有什么东西会根据css选择器语法创建元素。JQuery确实允许您创建和添加元素,但语法并不像您的示例中那样基于css选择器。例如,要在#test div之后添加类为a和b的#hello div,可以使用.after():

$('#test')。在(“Hello”)之后;​​​​​​​​​
jsfiddle:

$('#test')。在('Hello')之后。attr('id','Hello')。addClass('a')。addClass('b');​

jsfiddle:

我实际上在早些时候创建了一个,仍然有一点问题,但它适用于您正在考虑的情况,就像使用它一样

$.jseldom('#test.a.b')
您甚至可以将其与同级选择器一起使用

$.jseldom('#test #abc .child +.sibling-of-child')


如果您觉得它有用,请使用它,并在那里报告所有问题:p我真的希望将它变成对人们有益的东西:)

您的功能正是我想要的;我认为jQuery没有执行这种操作的默认功能,这是可以理解的,因为它没有通用性。无论如何,谢谢你的帮助,省去了我自己编写函数的麻烦!:)@约翰加特,伙计。很高兴帮助你。你好。我喜欢你的解决方案,但是你必须更新一个细节:newelement=$(''),在你的演示中,尝试向html面板添加一个新的div,看看会发生什么。再次感谢你!可能重复的
function createElement(el, target) {
   $(el).appendTo(target);
}
createElement('<div id="test" class="a b"></div>', 'body');
function createElement(el, prop, target) {
  var props = prop.split('.'),
      newelement = $(el),
      id = '',
      className = '';
    $.each(props, function(i, val) {
        if(val.indexOf('#') >= 0) {
           id += val.replace(/^#/, '');
        } else {
           className += val + ' ';
        }
    });
    if(id.length) newelement.attr('id', id);
    if(className.length) newelement.attr('class', className.trim());

    $(newelement).html('Newly born').appendTo(target);
}

createElement('div', '#test.a.b', '#con');​ // will work for #test.a.b or, .a.b or, #test.a
$("<div id='hello'></div>")
$('#test').after("<div id='hello' class='a b'>Hello</div>");​​​​​​​​​
$('#test').after('<div>Hello</div>').attr('id', 'hello').addClass('a').addclass('b');​
$.jseldom('#test.a.b')
$.jseldom('#test #abc .child +.sibling-of-child')