【问题标题】:Bind functions to elements inserted in the DOM? (Implicitly?)将函数绑定到插入 DOM 中的元素? (隐含的?)
【发布时间】:2011-03-29 07:40:13
【问题描述】:

这可能是 jquery 基础知识,但经过多次谷歌搜索后我找不到解决方案。

如何将“非事件”附加到插入 DOM 中的元素? 对于click等事件,我们可以使用live()bind()。 例如,您将如何将 tabs()addClass() 初始化为新元素?

具体来说,我试图让 tabs() 在 ajax 加载对话框的内容中工作,但我认为正确的解决方案应该适用于任何情况。

我确实看到了一个涉及 $('body').mousemove() 的技巧,它确实有效,但它仍然绑定到一个事件,显然是一个 hack。

例如,如何让 addClass() 在新插入的表格行上触发?

我的意思是隐含地这样做,这意味着我不想为每个将节点添加到 dom 的事件写出具体的指令,我只是希望它“在后台运行”。

如果这需要澄清,请告诉我,我在 SO 上看到许多类似的问题,但没有任何有用的答案。

编辑: 简单示例:页面调用$('a').addClass('highlight'),它适用于页面中的所有锚点。然后通过 jQuery 将新的锚点动态添加到页面中,但不会添加类。

编辑:我尝试了各种 bind()、trigger() 和 change() 方法,但恐怕我找错了树。

【问题讨论】:

    标签: jquery-ui jquery


    【解决方案1】:

    您需要查看livequery ,它将允许您将内容应用于新添加的元素

    如果你添加了你可以做的元素

    $('body')append('<div>some content</div>').tabs();
    

    或者类似的东西

    【讨论】:

    • 我确实遇到了 livequery,但不确定这是我想要的,我将快速浏览一下,谢谢。
    • @Madmartigan 我稍微修改了我的答案
    • 这正是我所追求的!非常感谢,从现在开始,这个脚本将成为我所有工作的核心组件。完美运行。
    • 为了记录,我使用的代码是$('.tabs').livequery(function() { $(this).tabs(); });
    • 那个livequery功能很好用!
    【解决方案2】:

    我知道我在这里可能会与您的“非事件”规则相矛盾,但只是说您想要“触发”某些东西,您已经在暗示某种事件。

    在这种情况下,我可以建议 jQuery 自定义事件吗?您可能想要创建一个自定义事件,然后在代码中的某处手动触发它。它不是自动的(就像当您添加一行时,BOOM,它会触发™),但这是我能想到的与您所描述的内容最接近的事情。

    具体来说,您可能想查看 jQuery 的 .bind().trigger() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多