我可以创建一个事件,这样只要具有特定ID的元素可见或显示在页面上,我就可以执行一些javascript吗?
该元素来自远程资源(因此不在MY html代码中,但在页面加载时出现)并且我想要一些代码在它出现时运行(并且只有当它出现时,它可能不会出现在每个加载)。
谢谢!
答案 0 :(得分:1)
如果选择器找不到匹配项,它就不会运行,所以只需要这样的代码就可以了:
$("#elementID").each(function() {
//do something
});
只需在任何加载ID的代码中运行该语句,或者在ajax处理程序中进行修改,如果它是如何加载的那样:
$.ajaxSetup({
complete: function() {
$("#elementID").each(function() {
//do something
});
}
});
答案 1 :(得分:1)
您可以使用 live() 方法:
$('div_id_or_class').live('click', function(){
// ................
});
答案 2 :(得分:1)
如果页面上出现这样的元素,那么你可以创建一个每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属性隐藏。