javascript - jQuery:如果 dom 元素不存在,则添加它

标签 javascript jquery dom

长问题

如果 DOM 元素尚不存在,是否可以添加该元素?

示例

我已经实现了这样的要求:

var ins = $("a[@id='iframeUrl']");
ins.siblings('#myIframe:first').remove().end().parent().prepend('<iframe id="myIframe"  src="'+ins.attr("href")+'"></iframe>');

是否可以用更优雅的内容替换第二行?喜欢ins.siblings('#myIframe:first').is().not().parent().prepend ...

我可以检查ins.siblings('#myIframe:first').length然后添加 IFrame,但好奇心占据了我的注意力,我试图用尽可能少的语句来做到这一点。

最佳答案

我认为你建议的方法(计算长度)是最有效的方法,即使它确实涉及更多的代码:

var ins = $("a[@id='iframeUrl']");

if(ins.siblings('#myIframe:first').length == 0)
    ins.parent().prepend('<iframe id="myIframe" src="'+ins.attr("href")+'"></iframe>');

此外,:first 选择器在这里是多余的,因为应该只有一个具有该 ID 的元素,因此:

var ins = $("a[@id='iframeUrl']");

if($('#myIframe').length == 0)
    ins.parent().prepend('<iframe id="myIframe" src="'+ins.attr("href")+'"></iframe>');

也可以。

编辑:正如 Fydo 在评论中提到的,长度检查也可以缩短,所以最简洁的形式是:

var ins = $("a[@id='iframeUrl']");

if(!$('#myIframe').length)
    ins.parent().prepend('<iframe id="myIframe" src="'+ins.attr("href")+'"></iframe>');

注意 if 条件中选择器前面的感叹号!

关于javascript - jQuery:如果 dom 元素不存在,则添加它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649029/

相关文章:

javascript - 将动态生成的对象数组传递给 onclick 处理程序

javascript - 适用于多个 ID 的简单 MDE 编辑器

javascript - 固定位置的顶部和左侧值在各种浏览器中发生变化

javascript - 函数如何知道它在 DOM 中的位置?

javascript - 使用自定义绑定(bind)、扩展器或自定义函数扩展 Knockout

javascript - 通过单击 Handlebars 插入的 anchor 元素来触发事件

javascript - IE8 : How to set focus to a popup and back without blinking orange

javascript - JavaScript 中的 Document 和 document 有什么区别?

javascript - Lodash _.template 渲染转义字符

javascript - 如何在 onPress 函数中访问 React Native 标签或元素的属性?