2010-10-13 74 views
1

我有一個div顯示,當我按下一個按鈕,隱藏當我在任何地方按下。Jquery - 文檔點擊禁用回傳?

jQuery(document).ready(function() { 
    $(document).click(function (e) { 
     if (e.button == 0) { 
      $('#DivToHide').hide(); 
     } 
    }); 

    //If its own, return 
    $('#DivToHide').click(function() { 
     return false; 
    }); 
    //If it is the button to triger Display, return 
    $('#DisplayDivButton').click(function() { 
     return false; 
    }); 
}); 

這工作不錯,除了:DivToHide包含一個鏈接按鈕,這使得回調。但是當我啓用上面的代碼時,它不會進行回調。並非所有的東西都在更新面板中。 謝謝。

回答

0

沒有對準div容器#DivToHide ..

目標實際的鏈接裏面

//If its own, return 
//this will make all links inside DivToHide to cancel default action.. 
$('#DivToHide a').click(function() { 
    return false; 
}); 

雖然,如果你有這裏面更多的鏈接,你最好添加一個ID的鏈接,直接針對它..

更新之後評論

您應該使用鏈接上的event.stopPropagation();停止冒泡到其他元素的事件。

$('#DivToHide a').click(function (event) { 
     event.stopPropagation(); 
    }); 
+0

@Karalahana,更新了我的答案.. – 2010-10-13 08:30:39

+0

是的,這完全是我需要的。非常感謝你。 – 2010-10-13 08:59:59

0

如果返回false這將防止事件的默認操作的執行。

當您單擊DIV裏面的鏈接,首次登記的DIV單擊處理程序,並返回false,停止自身實際接收click事件的基本環節。

我認爲這就是爲什麼你的鏈接無法正常工作的原因,但我不知道爲什麼你在#DivToHide上有一個處理程序,你不能只是刪除它,讓文檔句柄上的點擊處理程序隱藏DIV和顯示DIV的DisplayDivButton句柄上的點擊處理程序?

+0

謝謝,我使用DisplayDivButton打開div。但由於文檔點擊,當我按下div內的任何位置時,它隱藏自身,這是一個意外的行爲。爲了解決這個問題,我使用$( '#DivToHide')。點擊(函數(){返回false})這樣可以防止隱藏。但我怎麼能釋放我的linkbutton DivToHideClick和doccumnet點擊,我不知道。 – 2010-10-13 07:53:55

+0

夠公平的。我已經看到現在發佈的解決方案,所以猜測它是固定的,我想我誤解了你一點。 – EMMERICH 2010-10-13 09:37:25