我需要添加类似于Gmail的功能,其中在多个结果页面上记住项目列表上的复选框,以及离开并返回结果时。我想弄清楚的是这样做的最好方法。我正在使用PHP和jQuery。
我的第一个想法是在每个复选框上添加一个onClick,触发AJAX回调到服务器,该服务器将id存储在会话中的数组中。每次加载项目列表时,系统都会检查是否检查了行,并在必要时选中复选框。为了可靠性,在检查是否无法完成对服务器的请求(连接问题,服务器错误等)之后,将取消选中该复选框,并且请求将尽可能快地完成。
这听起来很不错,除了一些项目:
过去我没有找到一种可靠的方法来检测用户何时离开页面。如果有一种可靠的方法,那么我可以看到这是一个选项,所以它只是记录每个页面卸载。
还有其他解决方案或更好的方法吗?
编辑:正如Eran Galperin所述,check all方法只需要检查每个复选框,然后对所有行进行ajax调用。无需删除onClick。
此外,看起来事件委派方法是个好主意 - 会让事情变得更容易。
答案 0 :(得分:3)
对于离开页面的用户,您可以使用onbeforeonload事件,但是如果浏览器崩溃或以其他方式退出,则不会被捕获。使用它取决于能够捕获用户更改的重要程度。