0

我目前有一个 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;dr 版本:
在使用 jQuery.add() 添加元素之后,我该如何操作(例如,添加一个类)?

4

3 回答 3

1

你全都错了

  1. 您的字符串连接未正确转义"
  2. 您正在使用id并且class选择器错过了(id -#和 class - .
  3. .add()不用于添加新元素,需要使用.append()

尝试

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

演示:小提琴

我可以写成

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

演示:小提琴

于 2013-06-07T00:47:55.280 回答
1

更改.#

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

或者,如果您的意思是类,那么将您的标记更改为具有类而不是 id。

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

.new以 classnew#new目标元素,以 id 为目标元素new

.add() 不会将元素添加到 DOM。您可以使用 append 将元素添加为的最后一个子body元素

jQuery("body").append(elem)
于 2013-06-07T00:48:04.580 回答
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)
于 2013-06-07T00:49:59.787 回答