一旦页面上存在特定元素,是否存在用于调用回调的事件或简单函数。 我不是问如何检查元素是否存在。
作为例子
$("#item").exists(function(){ });
我最终使用了ready事件
$("#item").ready(function(){ });
答案 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(){});