【问题标题】:jquery live event for added dom elements用于添加 dom 元素的 jquery 实时事件
【发布时间】:2010-10-01 14:32:59
【问题描述】:

我想为页面上现在或将来具有指定类并满足某些条件的任何 DOM 元素添加一个类

所以对于一些伪代码

$('.location').live('load',function(){
    if($(this).find('input:first').val().substr(0,1) == "!"){ $(this).addClass('hidden')}
});

当然这没有任何作用

编辑注释

这也不行

$('.location').live('load',function(){
    alert('adding location');
});

【问题讨论】:

  • 查看我关于使用 livequery() 而不是 live() 的回答。这是 live() 所基于的插件。
  • 你用的是什么版本的jQuery?
  • 您是否可以控制将元素添加到页面的代码?
  • 是的,但我认为最好一次完成所有操作,而不是修改所有添加该类项目的不同内容

标签: jquery events live


【解决方案1】:

jQuery 的 live() 功能只是 livequery 插件的子集,它更加丰富。如果您使用 livequery,您可以执行类似的操作..

$('.location').livequery(function() {
   // perform selector on $(this) to apply class   
});

这将涵盖现有元素以及添加到 DOM 的任何未来元素。

【讨论】:

  • 所以这是一个需要包含的插件?
  • +1 我回答时没有看到这个答案。删除了我的。 :o) 虽然我不认为我会说一个是另一个的子集。它们的工作方式完全不同。
  • @patrick。也许子集是错误的词。我的意思是 livequery() 在 jQuery 添加它自己的 live() 功能之前就已经存在。通过子集,我的意思是 livequery 插件似乎更健壮(更少关于特定事件),因为您不必将 livequery 应用于单击、悬停、更改等。
  • @Gregg - 是的,就最终效果而言,live() 似乎是livequery() 的功能子集。但实际上live() 实际上并没有做任何事情livequery() 做的事情。它只是表面上看起来那样。 :o)
  • @Daniel Dyson 你能告诉我如何在不使用 livequery 的情况下做到这一点吗?
【解决方案2】:

你不能这样做。

你必须这样做:

$('.location').filter(function () {
    return ($(this).find('input:first').val().substr(0, 1) == "!");
}).addClass('hidden');

将其应用于页面上的所有当前元素,然后手动将“隐藏”类添加到您添加到 DOM 的未来元素中。

【讨论】:

  • 希望我能找到能涵盖所有这些的东西,但这可能是唯一的方法
  • @Gregg:如果您知道自动添加类以选择稍后添加到 DOM 的元素的正确解决方案,请分享。
【解决方案3】:

代码.subtr(0,1) = "!" 可能无法满足您的要求。

【讨论】:

  • 是的,它会检查字符串中的第一个字符是否为“!”我无法收到警报
  • 那里有一个= 字符。
  • 是的,对不起,我打错了,你是对的,但这不是问题的答案,谢谢你的帮助
猜你喜欢
  • 2012-07-30
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多