访问刚刚添加了jQuery.add()的元素

时间:2013-06-07 00:46:43

标签: javascript jquery

我目前有一个javascript函数,它使用jQuery .add()方法向DOM添加一个元素,然后立即尝试访问它(在这种情况下,通过添加一个类,等待并再次删除它)

elem = "<p id="new">added element</p>"
jQuery("body").add(elem)
jQuery("#new").addClass("red")
setTimeout(function(){
    jQuery(".new").removeClass("red")
},1000)

问题是jQuery选择器找不到.new元素。我发现类似问题的所有解决方案都涉及在加载后将单击/鼠标事件绑定到元素,这不是我在这种情况下要查找的内容。 我也查看了jQuery.add()的替代方法,但只提出了jQuery.append(),这导致了同样的问题。

如果它有任何相关性,则此代码片段所在的函数位于jQuery(document).ready()函数之外。

tl;博士版:
在使用jQuery.add()添加元素后,如何操作(例如添加类)?

3 个答案:

答案 0 :(得分:1)

你错了

  1. 您的字符串连接未正确转义"
  2. 您正在使用idclass选区错过(ID - #和课程 - .
  3. .add()不用于添加新元素,您需要使用.append()
  4. 尝试

    elem = '<p class="new">added element</p>'
    jQuery("body").append(elem)
    jQuery(".new").addClass("red")
    setTimeout(function(){
        jQuery(".new").removeClass("red")
    }, 1000)
    

    演示:Fiddle

    我可以把它写成

    var elem = $('<p class="new">added element</p>').appendTo('body').addClass('red');
    setTimeout(function(){
        elem.removeClass("red")
    }, 1000);
    

    演示:Fiddle

答案 1 :(得分:1)

.更改为#

jQuery("#new").addClass("red")
setTimeout(function(){
    jQuery("#new").removeClass("red")
});

或者如果您的意思是课程,那么请将您的标记更改为具有课程而不是ID。

elem = '<p class="new">added element</p>'

.new定位类new的元素,#new定位标识为new的元素。

.add()不会向DOM添加元素。您可以使用append通过执行

将元素添加为body的最后一个子元素
jQuery("body").append(elem)

答案 2 :(得分:0)

elem = "<p id="new">added element</p>"更改为elem = '<p id="new">added element</p>'

elem = '<p id="new">added element</p>';
jQuery("body").add(elem)
jQuery("#new").addClass("red")
setTimeout(function(){
    jQuery("#new").removeClass("red")
},1000)