我写了一个小寻呼机,可以删除并重写内容。我有一个在加载页面后调用的函数,它也应在更改页面后执行。因为我不想两次实现该函数(在初始化时和更改页面后),所以我尝试了 bind()/live() 和一个简单的函数。
该函数如下所示:
jQuery('.blogentry').each(function (){
jQuery(this).click(function(){
//Clicking on the element opens a layer, definitely works - I tested it
});
});
它是在初始化后执行的,为了在页面更改后执行它,我尝试了以下操作:
jQuery('.nextPage, .prevPage').click(function changePage(){
// Changing page and rewriting content
showEntry();
});
//...
showEntry();
//...
function showEntry(){
jQuery('.blogentry').each(function (){
jQuery(this).click(function(){
//Clicking on the element opens a layer, definitely works - I tested it
});
});
}
但是如果将其放入函数中(lol)并通过 showEntry() 调用,则该函数不会执行;
后来我尝试绑定(bind)该函数...
jQuery('.nextPage, .prevPage').click(function changePage(){
// Changing page and rewriting content
jQuery('.blogentry').bind("click", showEntry);
});
//...
jQuery(this).click(function showEntry(){
//Clicking on the element opens a layer, definitely works - I tested it
});
也没有用。 bind() 行之后的代码也不会执行。 我想如果已经通过参数给出了事件,那么绑定(bind)到事件函数可能是一个问题,所以我也尝试了这个:
jQuery('.nextPage, .prevPage').click(function changePage(){
// Changing page and rewriting content
jQuery('.blogentry').bind("click", showEntry);
});
//...
function showEntry(){
//Clicking on the element opens a layer, definitely works - I tested it
});
}
根本没有成功。也许我无法从与 bind() 有关的函数内部调用该函数?也许我根本不理解bind()函数?我还尝试了 live() 函数,因为它似乎更适合,因为我一直在重写内容。但它有同样的效果:没有......
最佳答案
实现这一点的最简单方法应该是
jQuery('.blogentry').live('click', function() { /* onclick handler */ });
这应该将该函数绑定(bind)到调用时页面上的每个博客条目以及稍后添加到页面的所有博客条目。
附加说明:
在 $(foo).each(function() { $(this).click(fun); });
中,each 是不必要的 - $(foo).click(有趣);
就足够了。
$(foo).bind('click', fun);
在功能上等同于 $(foo).click(fun)
- 哪个并不重要你用的一个。
关于javascript - 函数内的 Jquery bind()/live(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158947/