我設置了一個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()應該刪除選擇器的所有事件處理程序,那麼爲什麼我仍然保留原始事件處理程序?
好的工作夥伴。 。 –