将事件绑定到出现的div

时间:2010-03-12 10:40:22

标签: javascript jquery

我可以创建一个事件,这样只要具有特定ID的元素可见或显示在页面上,我就可以执行一些javascript吗?

该元素来自远程资源(因此不在MY html代码中,但在页面加载时出现)并且我想要一些代码在它出现时运行(并且只有当它出现时,它可能不会出现在每个加载)。

谢谢!

3 个答案:

答案 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属性隐藏。