Javascript无法识别页面加载后加载的HTML元素

时间:2013-01-08 18:50:04

标签: javascript jquery

我在两个不同的项目中遇到过这个问题,并最终意识到最近这个项目可能会有什么。在这两个中,我从SQL中提取了一些动态文本和一个动态值按钮(在一个项目中通过Python MVC,在另一个项目中通过PHP),我在按钮上有一个onclick函数,隐藏了一些文本

我第二次尝试它的问题,完全没问题。在第二个项目中,我最终在正确的位置发出了一些警报,并意识到在第一次单击时,可见性/显示CSS属性没有值(未定义,当我发出警报(object.style.display)时它只是空白) 。我认为this问题可能是我的答案,但是jQuery中的.live()折旧,我不确定如何处理.on() - 是我正在寻找加载的事件,或者还有什么我应该用的吗?

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要使用委托:

$( document ).on( 'click', '[selector for dynamic elements]', function () {
    // Do stuff here
} );

这样处理程序绑定到页面上始终存在的元素,selector参数允许您指定要操作的动态元素。

<强>更新

鉴于以下评论中的代码示例,假设thing1是静态的且thing2是动态的,那么您会有类似这样的内容:

$( '#thing1' ).on( 'click', '#thing2', function () {
    // Do stuff here (your foo() function code)
} );

或者你也可以引用一个命名函数:

$( '#thing1' ).on( 'click', '#thing2', foo /* name of function to assign to event */ );