替换部分innerHTML而不重新加载嵌入的视频
Replace part of innerHTML without reloading embedded videos
我有一个id为#test的div,其中包含大量的html,包括一些youtube嵌入等。
在这个div的某个地方有这个文本:"[test]"
我需要将该文本替换为"(works!)"。
正常的做法当然是:
document.getElementById("test").innerHTML = document.getElementById("test").replace("[test]","(works!)");
但问题是,如果我这样做,youtube-embeds将重新加载,这是不可接受的。
有办法做到这一点吗?
您必须针对特定的元素而不是父块。由于DOM正在改变,视频被重新绘制到DOM。
也许TextNode (textContent)
会帮助你,MSDN文档IE9,其他浏览器也应该支持它
让
[test]
是
<span id="replace-me">[test]</span>
现在使用下面的js来查找并更改它
document.getElementById('replace-me').text = '(works!)';
如果您需要更改多个位置,则使用class
而不是id
,并使用document.getElementsByClassName
并迭代返回的元素并逐个更改它们。
或者,您可以使用jQuery,这样做更简单:
$('#replace-me').text('(works!)');
现在使用jQuery进行单个替换可能有些多余,但是如果您需要更改多个位置(通过类名),jQuery绝对会派上用场:)
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 获取ajax加载的图像的大小
- jQuery加载的async和ready函数不工作
- 如何使新选择的html选项成为页面加载的第一选择
- ThreeJS访问加载的obj模型中的对象
- 对插件初始化后动态加载的元素进行样式设置
- 如何在不重新加载的情况下提交表单,并使用Node+Express将数据传递回同一页面
- 如何开始预加载同一视频的多个部分/章节
- 加载vimeo视频的前15秒
- 通过jQuery/JS加载的Youtube视频
- 在页面的其余部分完成加载后,延迟加载html5视频
- html5视频-将进度事件与动态加载的视频一起使用
- <视频>和加载的元数据事件
- 奇数Safari视频"加载"的行为
- 为什么我的jQuery代码不更新视频元素中加载的实时图像?
- 预加载HTML5视频以实现流畅的AJAX页面转换
- 如何静音音频/视频在网站上加载的任何标签
- Brightcove视频播放器,检测加载的视频
- 如何在页面上放置用于视频加载的占位符