0

我有一个 div 将出现在页面上的一个单独的点。它并不总是出现在页面上,如果需要,可以通过 CMS 添加。正文中将出现一行文本。如果用户决定添加此 div,则需要通过 jquery 将其移动到位。所以,我有这样的文字:

<p><strong>Key Facts:</strong></p>

我想使用 jquery 找到它,然后将另一个 div 移到它前面。我尝试了几种不同的方法来选择此文本,然后将 div 移到它前面,但没有任何运气。我发现找到文本的最好方法是这样做:

var foundin = $('*:contains("<p><strong>Key Facts:</strong></p>")');

从那时起,要将 div 移动到位,我想我可以这样:

$('#DivIWantToMove').insertBefore($foundin);

但是,那没有用。我也看了这个:

$( $foundin ).before( $('#DivIWantToMove') );

正如您可能想象的那样,既然您正在阅读本文,那也不起作用。所以,我问你,有没有可能做我想做的事?我受到我们正在使用的 CMS 的限制。我需要移动的 DIV 将始终位于页面上的某个位置,我必须移动它。客户不想添加一个类,<p><strong>Key Facts:</strong></p>所以我可以这样做。如果我能上一堂课,<p>那就太容易了。我已经做到了。客户不喜欢有额外的步骤。有任何想法吗?

4

1 回答 1

1

我认为contains选择器只查找文本,而不是 html 标签。所以你必须修改你的包含选择器。如果你的 html 是这样的 -

<div>
    <p><strong>Key Facts:</strong>
    </p>
</div>
<div id="move">something something</div>

并且您想将您<div id='move'>的前面移到p,然后试试这个 -

var foundin = $('p:contains("Key Facts")');
var divtomove = $('div#move');
foundin.before(divtomove);

Demo

更新还查看此 QA:jQuery :contains with htmlcontains您可以从那里使用其中一种方法,而不是使用。

于 2013-11-05T05:22:35.493 回答