【问题标题】:jQuery can't see an element after its loading via .load()jQuery 通过 .load() 加载后看不到元素
【发布时间】:2014-01-02 11:53:05
【问题描述】:

我使用 jQuery 方法 .load() 将一些内容加载到 html 页面中,如下所示:

$('#block_name').load('components/content.html #div1');

它加载完美,但我遇到了一个意想不到的问题。之后,jQuery 无法在加载内容的元素上触发任何过程。例如,如果#div1 具有 ID 为 my_link 的链接,那么这样的调用:

$('#my_link').on('click', function(){ /* some actions*/ });

没有效果。看起来它不存在,但如果我尝试在开发控制台中选择它,我可以找到它。 此外,如果我在模板(content.html)中的该链接中设置一个处理程序,如下所示:

<a id="my_link" href="#" onClick="return myFunction();">Link text</a>

...完美运行。 那么这种问题可能是什么原因造成的,有什么办法可以避免呢?

【问题讨论】:

    标签: html jquery dom javascript-events


    【解决方案1】:

    尝试.on()'s event delegation 使用:

    $('#block_name').on('click', '#my_link', function(){ /* some actions*/ });
    

    【讨论】:

    • +1 - 速度很快,甚至来不及读完问题?
    • 很好的答案,谢谢。顺便说一句,您提供的链接。在那里我发现了这样的声明:“如果将新 HTML 注入页面,则在将新 HTML 放入页面后选择元素并附加事件处理程序。”我是否理解正确,它与您提出的解决方案相同?它不起作用:(
    • 嗯,是的,您可以使用事件委托来处理添加到页面的新元素,或者在将新元素添加到页面后添加到页面的标准事件绑定。
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 2019-03-13
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多