我有一個div和一個按鈕的頁面。我已將onClick事件添加到他們兩個。現在,當我點擊div上的按鈕時,div的onClick也正在執行。有什麼方法可以避免這種情況?多個OnClick JQuery事件觸發
謝謝你,
我有一個div和一個按鈕的頁面。我已將onClick事件添加到他們兩個。現在,當我點擊div上的按鈕時,div的onClick也正在執行。有什麼方法可以避免這種情況?多個OnClick JQuery事件觸發
謝謝你,
試試這個,事件作爲參數傳遞給你的onclick事件,並呼籲
event.stopPropagation();
event.preventDefault();
你的onclick事件分配應該是:
$(button).click(function(event) {
// script here
event.stopPropagation();
event.preventDefault();
});
在聽者的鏈接元素,你可以把e.stopPropagation()
,這應該修復它(如果你使用事件冒泡)。
如果你不使用jQuery,請確保您的addEventListener()
的useCapture
參數設置爲False
info - MDN;你想確定你知道你的事件通過DOM移動的方向(你想讓它們冒泡)。
您需要防止按鈕onClick事件冒泡到Div。所以基本上在該按鈕的onClick的函數的結尾,一旦你做了所有你的邏輯,你需要調用event.stopPropagation()
在您單擊處理程序,你可能需要使用 「stopPropagation」,例如:
$("button").click(function(e) {
// handle this event
// ...
// don't pass this event up to parent handlers
e.stopPropagation();
});
還有一個相關函數,您可能想要閱讀有關稱爲「preventDefault」的函數,它告訴瀏覽器不要執行通常自動執行的操作(例如,提交頁面被點擊提交按鈕時)
參見: https://developer.mozilla.org/en/DOM/event.stopPropagation http://api.jquery.com/event.stopPropagation/ What's the effect of adding 'return false' to a click event listener? http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/
如果沒有上面的工作,嘗試:
$("button").click(function(e) {
e.stopImmediatePropagation();
});
修復它!你認爲我們可以看到一些代碼來幫助你嗎?到目前爲止,你基本上都說過「我有問題」。 – jeschafe 2012-07-23 15:55:45
聽起來像**事件傳播**的問題。 – Scotty 2012-07-23 15:56:12
可能重複的[防止點擊從孩子射擊父母點擊事件](http://stackoverflow.com/questions/6929198/prevent-click-from-child-firing-parent-click-event) – 2012-07-23 15:59:38