问题 创建元素时的jQuery事件


我想在创建元素时触发事件。

$(document).on('load','#TB_title',function() {
    console.log('loaded');
});

是否有相当的效果?

我看到有些人建议使用livequery,但这看起来很重。

谢谢。


3493
2018-02-13 15:02


起源

注意:#TB_title不是iframe。 - rpophessagr
请展开'创建元素时'。你的意思是什么时候一个元素被添加到DOM? - Rich O'Kelly
是的,我试图在加厚厚箱时触发一个功能。 - rpophessagr
我认为你不会放弃使用“沉重”的东西。当元素添加到DOM时,浏览器不会触发事件,因此您需要一些东西来动态确定。否则,您需要编写代码,以便了解何时添加内容并采取相应措施。 - James Montagne
@rpophessagr stackoverflow.com/questions/3384398/... - mgraph


答案:


使用这个插件:livequery

或看到这个链接;

如何在jQuery中检测新元素的创建?


3
2018-02-13 15:06



iframe从一开始就不存在于DOM中,因此使用on。 - rpophessagr
注意:#TB_title不是iframe - rpophessagr
这就是ajaxComplete,它可以解决问题。 - rpophessagr


我不认为这种事情直接存在,但你可以处理 DOMSubtreeModified 事件并等到你能找到具有这种ID的元素:

var _elementToFind = "TB_title";
var _elementFound = false;
var _counter = 1;
$(document).bind("DOMSubtreeModified", function(evt) {
    if (_elementFound)
        return;
    if ($("#" + _elementToFind).length > 0) {
        alert("element '" + _elementToFind + "' created");
        _elementFound = true;
    }
});

现场测试案例

缺点是它不支持Opera和IE不到9 - 看这里 详细信息。


5
2018-02-13 15:18





您可以触发全局自定义事件:

$(document).on('load','#TB_title',function() {
  $.event.trigger('nameOfCustomEvent');  
});

$('#element').bind('nameOfCustomEvent', function(){
  console.log(this);
});

2
2018-02-13 15:15



触发器永远不会触发,这就是OP所要求的问题。 - justin.m.chase