插入之前,发现CSS类- js不工作

insertbefore and find the css class - js not working

本文关键字:js 工作 CSS 发现 插入      更新时间:2023-09-26

我在这个div

之前添加了一些内容元素
<div id="before_this">
  blablabla
</div>

my js:

$('<p class="comment"> test <small> date </small></p>').insertBefore('#before_this').find('.comment');

,但类comment属性不会应用于新添加的元素。

如何在jquery中实现这一点?

这是怎么回事?它被应用,因为您创建了一个具有.comment类的新元素<p>。但是.find()不能工作,因为没有<p>的后代,它们具有.comment类。

如果您需要处理插入的元素,请继续使用链接:

$("<p class='comment'>...</p>").insertBefore("#before_this").css("color", "red");

insertBefore返回被调用的集合。这个集合在你的例子中已经是p.comment了。

在控制台中试试这个,你会看到p.comment jQuery对象:

var $p = $('<p class="comment"> test <small> date </small></p>').insertBefore('#before_this');
console.log($p); // p.comment jQ object

最后的.find()在所选元素中查找元素。因为您要查找的元素是选中的元素,所以这永远不会起作用。(换句话说,没有p.comment的后代具有类"comment ")

如果你想做的是选择你刚刚创建的元素,它已经被选中了。

var selectedElement = $('<p class="comment"> test <small> date </small></p>').insertBefore('#before_this');
// selectedElement === $('p.comment');

如果想要类名,请使用以下代码:

$('<p class="comment"> test <small> date </small></p>').insertBefore('#before_this').attr('class');

但是这当然没有意义,因为你已经知道你创建的元素的类,并给了一个类"comment"将是"comment"!