如何模仿jQuery插件LiveQuery?
我在一个我无法修改的站点框架内工作。 此框架在document.ready()之后的某个时刻向DOM添加了一个文本框。 我想给这个文本框重点。
jQuery的live
, delegate
和on
是不合适的,因为它们需要一个事件作为触发器。 我找不到相当于仅将项目添加到页面的事件。
有LiveQuery,但框架不允许我加载它。
有没有办法模拟LiveQuery或有人能想到的更好的替代方案? 我希望能够做到:
http://jsfiddle.net/psJmx/1/
$(document).ready(function() { //create an input in the future setTimeout('insertInput()', 1200); //give that input focus when it is added $('#foo').live('load', function() { $(this).focus(); }); }); function insertInput() { $('body').append(''); }
这是给你的新jsfiddle ……这是你的意思吗? http://jsfiddle.net/QsbU4/3/我刚改变了你的insertInput函数。 你不再需要live
部分。
作为一个说明,我知道轮询是一种糟糕的方式来做到这一点,但我有限制工作。 我无法控制插入元素的js,我只能使用jQuery 1.4.2。
我最终依靠民意调查了。 这就是我选择这样做的方式。 我给出了最大的尝试次数和合理的轮询时间,这样我就不会在页面上乱窜了。 如果元素在前三秒内没有出现,我放弃了。
//poll for appearance of element var attempts = 10; var pollTime = 300; modifyTree(); function modifyTree() { if ($('#foo').length > 0) { //do something to foo } else { //continue polling for element if (attempts--) { setTimeout('modifyTree()', pollTime);} } }