我设置了一个PHP脚本的ajax请求,从服务器获取一些图像并显示它们。在ajax请求期间,我启用了一些额外的控件。我有两种图像模式,一种可以显示图像的大图,另一种可以让我对图像进行分类。jQuery .off()不删除事件
我实现了一个复选框,以便我可以在两种模式之间切换。每当我点击搜索并调用ajax请求时,图像都对应于复选框创建时的模式。
我想要做的就是让它点击复选框,让我无需再次搜索就可以切换模式。
$.ajax({
url: './search.php',
type: 'POST',
success: function(data) {
$("#images").html(data);
enableControls();
},
这是ajax请求的代码片段,我接收图像,将它们添加到我的页面并启用控件。
$('#sortable').change(function() {
enableControls();
});
这是我允许我的复选框更改控件状态的代码片段。
function enableControls() {
$('.img-responsive').off();
if($('#sortable').is(":checked")) {
$('.img-responsive').on('dblclick', sortableDoubleClick);
}
else {
$('.img-responsive').on('dblclick', imgDoubleClick);
}
}
这是我启用双击行为的代码片段。在分类模式下双击会使图像进入图像行/列的前端(左上角)。双击它处于非分类模式时会显示更大版本的图像。
img-responsive类是从搜索中返回的所有图像都具有的类,也是我如何将它们作为一个组引用的类。
不幸的是,线
$('.img-responsive').off();
不工作,我希望它的方式。我希望它完全禁用现有控件,以便可以设置任何我想要的新控件。它不这样做。现在发生的事情是,我可以同时获得双击控件。
那么,假设我在非排序模式下搜索,然后单击我的复选框将其置于分类模式。当我双击图像时,它会打开它的较大版本并将其移动到左上角。
我该如何解决这个问题?我假设我调用.off()的方式不正确,但据我了解,.off()应该删除选择器的所有事件处理程序,那么为什么我仍然保留原始事件处理程序?
好的工作伙伴。 。 –