【问题标题】:jquery doesn't see new elementsjquery 没有看到新元素
【发布时间】:2010-10-23 08:08:05
【问题描述】:

我是 JQuery 新手,所以请耐心等待 :)。

我有一个简单的问题:

$(document).ready(function() {

     $("#instrument").change(function() {
         $("#tunings").html("<select id=\"TuningSelector>\"[..]</div>");
     });

     $("#TuningSelector").change(function() {
         DoSomethingWithTheValue();
      }); 

 });

问题是:当乐器发生变化时,脚本不再响应 TuningSelector 的变化。就像 JQuery 没有看到新的 TuningSelector 元素...

我需要在 JQuery 上调用刷新吗?让它看到刷新后的 DOM?

【问题讨论】:

    标签: jquery dom refresh


    【解决方案1】:

    通常您希望使用on,以便它将处理程序应用于与选择器匹配的新元素并委托给 DOM 中的更高元素。

    $('body').on( 'change', '#control', function() {
        DoSomething();
    });
    

    【讨论】:

    • .live("change") 直到 jQuery 1.4 docs.jquery.com/JQuery_1.4_Roadmap#Events 才会实现
    • @Sam - 感谢您指出这一点。我还没有将它与 select 一起使用,也没有意识到它不在支持的列表中。我的答案已更新以反映这一点。
    • 对于任何阅读本文的人,不推荐使用 .live() 来支持 .on()
    • 您需要在末尾添加分号(;)而不是冒号
    【解决方案2】:

    对于 jQuery 事件,如果您希望将事件应用于新元素,您可以使用 .live 方法,但是 jQuery 1.3 不支持 blur、focus、mouseenter、mouseleave、change、提交事件作为实时事件。 (更改、提交和模糊/聚焦在 jQuery 1.4 的 roadmap 上)

    您也可以使用liveQuery 插件。

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多