附加html的jquery没有检测到javascript?

时间:2010-10-10 19:24:46

标签: jquery html ajax append

对不起,如果我的问题deosnt有意义,但这是我可以把它的最佳方式,我有这个jquery脚本,当用户点击登录链接时,它附加html表单这样做,这工作正常,但附加(登录表单)使用jquery登录该站点,但它似乎检测到javascript,

反对我在没有附加的情况下放入登录表单,只是正常在页面上,它工作正常,它检测到javascript,但不会在追加时。

我希望你能理解我刚才所说的感谢:))

代码有点长,但我为了illustartion的目的缩短了它。

http://jsfiddle.net/YHCwM/1/

2 个答案:

答案 0 :(得分:4)

这是因为通常jQuery会在脚本首次运行时将事件绑定到DOM中已有的元素。之后添加的元素需要以不同的方式绑定,通常使用.live()

而不是:

$('#elementAddedLater').click(function(){/*....*/});

尝试:

$('#elementAddedLater').live('click',function(){/*....*/});

上面的链接函数名称给出了可以通过.live()

绑定的其他事件的贯穿情况

正如@Pointy在下面所说,它也值得看.delegate(),它似乎提供与.live()大致相同的功能,但更简洁明了。

答案 1 :(得分:1)

发生这种情况的原因是你的事件序列:

  1. DocumentLoad触发
  2. submit()处理程序附加到尚不存在的元素 - 因此不添加处理程序
  3. 用户点击将元素添加到页面的按钮
  4. 您可以使用 live events 或更改订单来解决此问题。 (submit事件的实时连线是jQuery 1.4.1 IIRC的新内容。

    $('#regForm2').live('submit', function(e){});