微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 对尚未创建的某些元素使用.one()(如.live())

有没有办法使用one()与事件委托?喜欢on()或live(),以便它将应用于未在绑定时创建的DOM元素?

解决方法

是.从 jQuery .one() docs

The second two forms,introduced in jQuery 1.7,are identical to .on() except that the handler is removed after the first time the event occurs at the delegated element,whether the selector matched anything or not. For example:

$("#foo").one("click",function() {
      alert("This will be displayed only once.");
    });
    $("body").one("click","#foo",function() {
      alert("This displays if #foo is the first thing clicked in the body.");
    });

After the code is executed,a click on the element with ID foo will display the alert. Subsequent clicks will do nothing.

这意味着,当你使用表单$(el).one(‘click’,’.selector’,handler)时,它将像live一样工作 – 事件处理程序绑定到el(必须存在于DOM中)但只有在.selector上点击时才会执行事件处理程序,无论在调用.one()期间该元素是否存在.

编辑:似乎jQuery的文档是错误的 – 至少,我解释它的方式.根据上面的提醒,

“This displays if #foo is the first thing clicked in the body.”

这让我觉得如果首先在主体中点击任何其他内容,事件处理程序将被删除,并且不会再次触发.情况并非如此 – 事件处理程序将存在,直到单击#foo一次.

有关演示,请参见this fiddle.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐