對不起,如果這已經發布,但我已經看到其中許多人,並試圖得到使用它們來獲得解決方案,但他們都沒有爲我工作。如何恢復以前的聽衆?
以下是我認爲正確的方法(沒有其他編碼我正在做)。當觸發F1
時,應該禁用點擊。當我F2
被觸發時,應該啓用:
$('.head2, .head3').click(function(event) {
var object = $(this).siblings('.head4');
if (something) F1();
if (somethingelse)) F2();
function F1() {
object.siblings('.head3').children('.primary').off('click');
}
function F2() {
object.siblings('.head3').children('.primary').on('click');
}
});
問題:點擊事件偵聽器不會關閉。
2.
$('.head2 li, .head3 li').click(function(event) {
var object = $(this).parent().siblings('.head4');
if (something) F1();
if (somethingelse)) F2();
function F1() {
object.siblings('.head3').children('.primary').off('click');
}
function F2() {
object.siblings('.head3').children('.primary').on('click');
}
});
問題:.primary
不重新分配一個click事件偵聽
3.
func = $('.head2 li, .head3 li').click(function(event) {
var object = $(this).parent().siblings('.head4');
if (something) F1();
if (somethingelse)) F2();
function F1() {
object.siblings('.head3').children('.primary').off('click');
}
function F2() {
object.siblings('.head3').children('.primary').on('click', func);
}
});
問題:ERROR: Uncaught TypeError: Object [object Object] has no method 'apply'
爲了更好地澄清什麼,我我在做,我試圖關閉一組li
這是事件處理程序附加到它沒有關閉其他人,只有當它被切換。
例子:
<ul class="head">
<li class="sub1"></div>
<li class="sub2"></div>
<li class="sub3"></div>
</div>
當你點擊任何li
的,有事,然後.sub1
有其Click事件處理程序中移除。然後,當再次點擊li
中的任何一個時,除sub1
之外,操作都會顛倒,並且sub1
會再次變爲可點擊。
將關閉點擊只是禁用或刪除相應的事件監聽器,如果刪除將做「上」時,它捲土重來? – sabithpocker 2012-07-18 23:23:55
@sabithpocker - '.off()'完全刪除事件處理程序。你必須用'.on()'從頭開始重新安裝,包括事件處理函數。您可以在['.on()'doc](http://api.jquery.com/on/)中看到事件處理程序不是可選參數。 – jfriend00 2012-07-18 23:24:59
我添加了函數調用。 – 2012-07-18 23:25:56