2013-12-14 81 views
0

我想阻止點擊事件,但e.stopPropagation()不起作用。如何防止單擊另一個元素時的div.click事件

我正在嘗試寫Jtable之類的東西。我使用div作爲分頁按鈕(1),另一個元素是刪除按鈕。

我需要在刪除確認框彈出時禁用分頁按鈕。點擊刪除或取消「我希望我的分頁按鈕再次工作」後。 有沒有解決方法? enter image description here

function deleteit() { 
    $(".del").click(function() { 
    $(".divbutton").click(function(e) { 
    alert(1); 
    e.stopPropagation(); 
    }); 
} 

$(".deletebtn").click(function() { 
    deleteit(); 
}); 

$(".divbutton").click(function() { // I want to prevent this from click 
    //ajax send and display data 
}); 

我知道,我應該使用禁用的,而不是DIV輸入,但我需要使用DIV。 編輯:添加圖像使其可以理解。

+0

哪一部分涉及到「div.click」和至極部分「其他元素」 – Zword

+0

請修復您的縮進。而你的語法無效。很難說出你想要做什麼。 –

+0

啊對不起另一個元素是.deletebtn,我用div作爲按鈕。 –

回答

1

而是防止點擊處理程序...刪除註冊的處理程序使用.off(),這裏namespaced event name的使用,因爲我們只想刪除一個非常具體的處理程序

function deleteit() { 
    $(".del").click(function() { 
     $(".divbutton").off('click.delete') 
    }) 
} 

$(".deletebtn").click(function() { 
    deleteit(); 
}); 

$(".divbutton").on('click.delete', function() { // I want to prevent this from click 
    //ajax send and display data 
}); 

爲什麼你的代碼不能正常工作?因爲停止傳播將阻止事件冒泡,但在您的情況下,事件都被註冊到divbutton,因此即使傳播被阻止,它們也會被觸發。

另一種方法是使用stopImmediatePropagation()甚至是不可能的,因爲在這裏你刪除寄存器中的處理程序後,第一個被稱爲後,纔將得到執行

相關問題