我正在使用jquery加载功能在我页面中的日历页面之间滚动。我正在使用这个功能
$(document).ready(function(){
$('a.cal').bind('click', function(e) {
var url = $(this).attr('href');
$('div#calender').load(url);
e.preventDefault();
});
});
将行为分配给具有“cal”类的锚点,该类基本上将日历的下一页和上一页加载到日历的容器中,#calender。
问题是该行为仅适用于ONCE。 div第一次很好地刷新了新内容,但是后续点击下一个/上一个按钮会使它加载一个新页面。
有人可以帮帮我吗?
我的猜测是上面的代码在第一次加载时将行为分配给类'cal'的锚点,但点击下一个/ prev按钮刷新div中的日历,那些导航按钮没有ajax行为。
我怎么能解决这个问题...我真的很感谢你的帮助。
感谢。
答案 0 :(得分:3)
使用live确保处理程序绑定到所有当前和的未来元素:
$('a.cal').live('click', function(e) {
var url = $(this).attr('href');
$('div#calender').load(url);
e.preventDefault();
});
答案 1 :(得分:0)
您可以尝试使用live("click"...
代替bind("click"...
live()
使用事件委托,而bind()
直接附加到元素,因此当您创建在附加事件处理程序时不存在的新元素时,它们不会获取事件处理程序。
答案 2 :(得分:0)
而不是绑定使用直播
$('a.cal').live( 'click', function(e) {
// your same click handling
});
来自文档http://docs.jquery.com/Events/live#typefn
将处理程序绑定到所有当前和未来匹配元素
的事件(如单击)
这基本上意味着每当使用cal
类添加新元素时,它们会自动将事件处理程序绑定到它们