如何解决分页后jQuery功能不再起作用
| 我正在为我的网站使用CodeIgniter。在一页上,我展示了不同的车辆。用户可以分页浏览所有结果。 我也有一些下拉框,用户可以使用它们进一步过滤结果。一个下拉框包含品牌的主要类别(梅赛德斯,DAF等) 第二个下拉框包含车辆类型。我为此框创建了一个JQuery函数,该函数根据在第一个框中选择的品牌更新框的内容。当我单击分页链接转到下一页时,这不再起作用。我猜这与在就绪部分中创建函数有关。有人可以帮忙吗? jQuery代码:<script type=\"text/javascript\">
function updateTypes(){
$.ajax({
type: \"POST\",data: \"merk_id=\" + $(\'#selection\').val() + \"&voertuig=\" + $(\'#voertuig\').val(),url: \"dropdown\",success: function(msg){
if (msg != \'\'){
$(\"#selectionresult\").html(msg).show();
}
}
});
}
$(\"#selection\").change(updateTypes);
// Update types when entering the second box with the mouse
$(\"#selectionresult\").mouseenter(updateTypes);
第一个框具有id = selection,第二个框具有id = selectionresult
提前致谢!
解决方法
听起来像
.html()
调用清除了先前绑定的click
事件处理程序。使用.live()
或.delegate()
代替.click()
。更改
$(\"#selection\").change(updateTypes);
至
$(\"#selection\").live(\'change\',updateTypes);
// or
$(\'some ancestor of #selection\').delegate(\'#selection\',\'change\',updateTypes);
这样做会将事件侦听器绑定到DOM树的更高位置,因此侦听器不会因$(\"#selection\").html()
调用而消失。
, 分页时会重新渲染选择吗?如果是这样,您将需要一种方法再次绑定.change()
和.mouseenter()
事件,因为原始对象不再存在。
看看jquery.delegate()
, 尝试使用
$(\'body\').delegate(\'#selection\',\'propertychange change\',function(){
updateTypes();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。