如何在页面上选择文本块,然后将元素移动到其前面
How can I select a block of text on a page, then move an element in front of it?
我有一个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>
课,那就太容易了。我已经做到了。客户不喜欢有额外的步骤。有什么想法吗?
我认为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);
演示
更新另请查看此 QA:jQuery :包含与 html。您可以使用那里的方法之一,而不是使用contains
。
相关文章:
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- 将元素移动到右侧,然后返回到左侧
- 添加animate.css类,然后使用remove移除元素
- Angular js,在选择元素上,我想 POST 数据以将其保存在数据库中,然后我想使用 PUT 更新它而无需重新加载
- 在元素中搜索字符串,然后将其放入条件语句中
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JQuery 测试元素是可见的还是隐藏的,然后添加删除类
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- jQuery检查URL,然后显示和隐藏元素
- Javascript(动态)插入到数组中,然后移动+1下面的所有元素
- jQuery-等待此元素,然后执行1次
- 如何正确地等待元素获得正确的宽度,然后在Angular 2中访问它
- ()插入元素,然后将其取回
- 从数组中删除元素,然后保留其状态以备将来使用,而不使用全局变量
- jQuery查找元素,然后组成逗号分隔的列表
- 使用Raphael.js可以相对定位一个元素,然后将其偏移一个绝对单位
- 我如何让我的网站检测鼠标是否被使用,然后在元素中添加一个类
- 关于在动态创建的元素中添加预先样式化的类或在那里添加stying&然后
- 按类和自定义属性值查找元素(然后更新它)