在追加到 JQuery 之前检查 DOM 元素是不是自动存在

Posted

技术标签:

【中文标题】在追加到 JQuery 之前检查 DOM 元素是不是自动存在【英文标题】:Check if DOM Element exists automatically before appending in JQuery在追加到 JQuery 之前检查 DOM 元素是否自动存在 【发布时间】:2011-10-23 16:09:04 【问题描述】:

基本上,我希望每次向 DOM 追加或添加我要放入的元素不存在时运行检查。我正在制作复杂的应用程序,有时会制作重复的元素,导致事件无法正确触发。

我不想每次更改 DOM 时都必须手动运行此检查,我希望在调用 prepend 或 append 函数时自动运行它。调用函数时是否有可以监听的事件?

我不会在应用程序发布时使用此检查,因为我意识到它可能会严重影响性能,但在开发过程中它会非常有价值。

【问题讨论】:

是否希望此检查基于元素 ID,或者...? 【参考方案1】:

只需覆盖jQuery.fn.append

(function() 
    var append = jQuery.fn.append;
    jQuery.fn.append = function() 
        var elemExists = ...;
        if (!elemExists) 
            append.apply(this, arguments);
        
    ;
)();

jQuery.fn.prepend 执行相同的操作。这很好用,因为您必须对生产进行的唯一更改就是排除此功能。

【讨论】:

谢谢!这正是我想要的。 另外,现在你可以使用Node.contains()方法。参考:How can I check if an element exists in the visible DOM?.

以上是关于在追加到 JQuery 之前检查 DOM 元素是不是自动存在的主要内容,如果未能解决你的问题,请参考以下文章

检查元素在 DOM 中是不是可见

JQuery动态创建删除DOM元素

jquery获取到最新追加 的那个元素 怎么获取到

jQuery检查元素是不是存在[重复]

JQuery

需要更改此 JQuery 代码以在处理之前检查元素是不是存在 [重复]