我有一个jquery驱动的投票系统,其他页面上的项目是通过ajax加载的,但是在加载了ajax的内容上,jquery投票需要刷新页面才能进行投票处理。
我认为这个问题属于file(?)中的行为,但我不太确定。我没有任何代码可以启动,因为我甚至不知道从哪里开始。我该如何解决这个问题?
答案 0 :(得分:3)
似乎您正在使用SmartAjax加载页面内容。 SmartAjax的作用是更改页面URL(使用pushState或hash),加载数据并用加载的内容替换#posts div的内容。
问题在于您正在侦听来自DOM元素的单击事件,这些事件稍后会被删除并替换为新的DOM元素。因此,不会侦听来自ajax加载内容的单击事件。 live()
在这种情况下无效。
要解决此问题,您至少有以下两个选项:
1)使用jQuery的delegate()
附加处理程序并使用#posts div作为根元素,因为它在加载新内容后仍然存在。
这样的事情应该有效:
$('#posts').delegate(':input', 'click', function() {
var value = $(this).val();
alert('You have clicked thumbs up/down, value: ' + value);
return false;
});
2)在数据加载完成后,为已加载的项添加点击监听器。
注意:启动jQuery 1.7时,您应该使用on()
而不是delegate()