2014-11-24 50 views
0

好了,所以我有這樣的代碼:禁用和啓用單擊處理

jQuery(".view-kems-tickets-calendar td.single-day").not(".no-entry, .empty").click(function() { 
    jQuery(".all-day-items", this).slideDown("slow"); 
    jQuery(this).off("click"); 
}); 

jQuery(".view-kems-tickets-calendar .close-all-day").click(function() { 
    jQuery(".all-day-items").slideUp("fast", function() { 
    }); 
}); 

所以它做什麼。它使可點擊td.single-day並顯示存在於此td標記內的.all-day-items類元素。 .all-day-items元素包含.close-all-day元素,該元素關閉先前打開的.all-day-items元素。問題是,在點擊.close-all-day元素的同時,我點擊td.single-day,然後關閉並再次打開。我把這條線:

jQuery(this).off("click"); 

要禁用它,但我如何在完整的功能再次激活它?我嘗試了幾個方法,但它總是像以前一樣運行(它會關閉並重新打開.close-all-day元素)。

這是怎麼回事不起作用::)代碼: http://codepen.io/anon/pen/GgJZOp

+0

參見[這](http://stackoverflow.com/a/ 9898789/1025201)回答,如果這可以幫助你 – mprabhat 2014-11-24 17:06:49

+0

我認爲你是在尋找jQuery stopPropagation()方法 - http://api.jquery.com/event.stoppropagation/ – mgibala 2014-11-24 17:06:50

回答

1

也許這可以幫助你:

jQuery(".view-kems-tickets-calendar td.single-day").not(".no-entry, .empty").click(function(e){ 
    if(!$(e.target).is('.close-all-day')){ 
     jQuery(".all-day-items", this).slideDown("slow"); 
    } 
}); 
+0

不行,它不起作用:( – David 2014-11-24 17:53:47

+0

可能你還需要添加html代碼嗎?這樣會更容易幫助你:) – twain 2014-11-24 18:15:50

+0

當然,沒問題,這裏它是:http://codepen.io/anon/pen/GgJZOp – David 2014-11-24 20:22:18