我可以创建一个事件,以便每当具有特定ID的元素变为可见或出现在页面上时,我可以执行一些JavaScript?将事件绑定到div出现
元素来自远程资源(所以不是在我的html代码中,但出现在页面加载),我想要一些代码运行时出现(只有它出现时,它可能不会出现每加载)。
谢谢!
我可以创建一个事件,以便每当具有特定ID的元素变为可见或出现在页面上时,我可以执行一些JavaScript?将事件绑定到div出现
元素来自远程资源(所以不是在我的html代码中,但出现在页面加载),我想要一些代码运行时出现(只有它出现时,它可能不会出现每加载)。
谢谢!
您可以将检查每X毫秒,如果这样的元素出现在页面(一个纯JavaScript解决方案)上的功能:
(function() {
var intervalId = window.setInterval(function() {
if (null != document.getElementById('myDivId')) {
// the div appeared on the page
// ... do your stuff here:
alert('its here!');
// optionally stop checking (obviously it's there already
// unless you decide to remove it)
window.clearInterval(intervalId);
};
}, 100); // perform check every 100 milliseconds
})();
存在这样的可能性,该DIV是那里所有的时间,只不可见。所以,你的检查功能应该是有一点不同:
var el = document.getElementById('myDivId');
if (null != el && (el.offsetWidth > 0 || el.offsetHeight > 0)) {
基本上(el.offsetWidth > 0 || el.offsetHeight > 0)
表示该元件不被其或其父母的CSS属性是隐藏的。
拨弄它在这里:http://jsfiddle.net/xS63J/ – 2010-03-12 12:16:44
谢谢,我很好奇如何资源密集,它会执行这每100毫秒?我想这将是不可知的,但只是仔细检查:) – AndrewC 2010-03-12 13:44:18
根据我的经验不明显。另外,我通过本地生成光,没有jQuery等。 – 2010-03-12 14:22:38
如果选择没有找到匹配,它只是将无法运行,所以像这样仅仅有代码是罚款:
$("#elementID").each(function() {
//do something
});
只要运行在任何代码加载ID的发言,或者钻机它在阿贾克斯处理程序,如果这就是它是如何得到加载这样的:
$.ajaxSetup({
complete: function() {
$("#elementID").each(function() {
//do something
});
}
});
你可以更具体地了解如何将该片段投放到页面中吗?你用ajax加载它还是加载到iframe或其他方式? – 2010-03-12 10:47:00
@Marko Dumic它由外部JavaScript web服务(Microsoft的翻译AJAX API)加载。 如果您曾经使用过它,它会在页面顶部创建一个工具栏,但只会在您调用Web服务时插入它。 :) – AndrewC 2010-03-12 11:36:45