对不起,如果我的问题deosnt有意义,但这是我可以把它的最佳方式,我有这个jquery脚本,当用户点击登录链接时,它附加html表单这样做,这工作正常,但附加(登录表单)使用jquery登录该站点,但它似乎检测到javascript,
反对我在没有附加的情况下放入登录表单,只是正常在页面上,它工作正常,它检测到javascript,但不会在追加时。
我希望你能理解我刚才所说的感谢:))
代码有点长,但我为了illustartion的目的缩短了它。
答案 0 :(得分:4)
这是因为通常jQuery会在脚本首次运行时将事件绑定到DOM中已有的元素。之后添加的元素需要以不同的方式绑定,通常使用.live()
。
而不是:
$('#elementAddedLater').click(function(){/*....*/});
尝试:
$('#elementAddedLater').live('click',function(){/*....*/});
上面的链接函数名称给出了可以通过.live()
正如@Pointy在下面所说,它也值得看.delegate()
,它似乎提供与.live()
大致相同的功能,但更简洁明了。
答案 1 :(得分:1)
发生这种情况的原因是你的事件序列:
submit()
处理程序附加到尚不存在的元素 - 因此不添加处理程序您可以使用 live events 或更改订单来解决此问题。 (submit
事件的实时连线是jQuery 1.4.1 IIRC的新内容。
$('#regForm2').live('submit', function(e){});