jQuery元素存在事件

时间:2011-08-28 08:19:33

标签: jquery events exists

一旦页面上存在特定元素,是否存在用于调用回调的事件或简单函数。 我不是问如何检查元素是否存在。

作为例子

$("#item").exists(function(){ });

我最终使用了ready事件

 $("#item").ready(function(){ });

3 个答案:

答案 0 :(得分:3)

LiveQuery jQuery插件似乎是大多数人用来解决这个问题的。

  

Live Query通过绑定事件或利用jQuery选择器的强大功能   即使在之后,也会自动地为匹配的元素触发回调   页面已加载并且DOM已更新。

这是一个快速的小说,我把它放在一起来证明这一点:http://jsfiddle.net/87WZ3/1/

以下是每次创建div时触发事件并演写刚刚创建的div的唯一ID的演示:http://jsfiddle.net/87WZ3/2/

答案 1 :(得分:3)

我遇到了同样的问题,所以我继续为它写了一个插件:https://gist.github.com/4200601

$(selector).waitUntilExists(function);

代码:

(function ($) {

/**
* @function
* @property {object} jQuery plugin which runs handler function once specified element is inserted into the DOM
* @param {function} handler A function to execute at the time when the element is inserted
* @param {bool} shouldRunHandlerOnce Optional: if true, handler is unbound after its first invocation
* @example $(selector).waitUntilExists(function);
*/

$.fn.waitUntilExists    = function (handler, shouldRunHandlerOnce, isChild) {
    var found       = 'found';
    var $this       = $(this.selector);
    var $elements   = $this.not(function () { return $(this).data(found); }).each(handler).data(found, true);

    if (!isChild)
    {
        (window.waitUntilExists_Intervals = window.waitUntilExists_Intervals || {})[this.selector] =
            window.setInterval(function () { $this.waitUntilExists(handler, shouldRunHandlerOnce, true); }, 500)
        ;
    }
    else if (shouldRunHandlerOnce && $elements.length)
    {
        window.clearInterval(window.waitUntilExists_Intervals[this.selector]);
    }

    return $this;
}

}(jQuery));

答案 2 :(得分:1)

看一下.live函数。它在选择器中的所有当前和未来元素上执行。

$('div')。live(function(){});