【问题标题】:jQuery: using .live method also for elements/plugins?jQuery:对元素/插件也使用 .live 方法?
【发布时间】:2009-12-05 17:16:40
【问题描述】:

我制作了一个简单的 jQuery 按钮小部件(插件),它的初始化如下:

var cmd = $(".tButton");
cmd.tButton();

有没有办法将 .live 用于所有未来的按钮(通过 ajax 加载)?

谢谢

【问题讨论】:

  • live() 用于用户启动某些 UI 事件时。支持的事件列表为clickdblclickmousedownmouseupmousemovemouseovermouseoutkeydownkeypresskeyupdocs.jquery.com/Events/live
  • jQuery 1.4 Alpha 刚刚发布,它支持更多的事件。等不及正式发布了!

标签: jquery ajax live


【解决方案1】:

你可以,但要小心你在做什么。如果您想自动重新运行您的插件连接代码,那么$.fn.live() 不是您想要的。

如果您要附加一些事件处理程序,那么您可以,但您需要将其附加到主集合,如下所示:

 $.fn.yourPlugin = function(){
     this.live('click', function(){...});
 }

【讨论】:

  • 你如何使用$.live()?是实用函数吗?
  • 我的错,不是$.live(),而是$.fn.live()
  • 谢谢 - 我还以为有一个我不知道的 jQuery 命令!
【解决方案2】:

这个问题的答案是否定的,但如果您所做的只是处理事件,dcneiner 的答案就很好。如果您想进行其他一些修改,那您就不走运了。

live 通过将事件处理程序附加到文档元素来工作。由于事件在 js 中冒泡(它们可以由 clicked/mouseover'd/etc 元素的父级处理),文档有机会处理来自页面上每个元素的事件。

不幸的是,据我所知,创建元素时没有任何事件,因此您无法在创建元素时自动运行函数。 jQuery 的 live 不知道新按钮是否存在,直到它被单击/鼠标悬停/等。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多