2013-09-16 121 views
2

我有一個問題,我在我的網站上有大約200個可點擊的按鈕。 所有按鈕的設計就像是相同的:如何使div可點擊

<div> 
<asp:hyperlink> //or LinkButton 
</div> 

股利是按鈕和超鏈接/ LinkBut​​ton的背景風格是按鈕的文本。 當然,此時只有文本可以正確點擊,所以如果您單擊文本下方但點擊了按鈕,則點擊失敗。

我想改變這個,問題是,什麼是最快和最簡單的方法來確保背景按鈕本身是可點擊的,但不寫200新按鈕?!

+0

這是生成的HTML標記?哪個是你的CSS?給與你收到。添加[jsfiddle](http://jsfiddle.net/)以期望得到一些答案。 – Alvaro

回答

6

這裏是一個純CSS解決方案

讓表現爲一個塊級元素的標籤,並給它的大小相同的父元素。

這裏是一個jsfiddle

HTML

<div class="wholediv"> 
    <a href="http://www.google.com">Your link</a> 
</div> 


CSS

.wholediv{ 
    width: 100px; 
    height: 100px; 
    background-color: #efefef; 
} 

.wholediv a { 
    width: 100px; 
    height: 100px; 
    display:block; 
    background-color: pink; 
} 
+0

如此完美!!!!! – Kovu

0

您可以使用jQuery設置一個點擊事件處理程序的所有div,像這樣:

HTML:

<div style="background-color: red; width: 50px; text-align: center;" id="one"> 
    <a>Hello</a> 
</div> 
<br/> 
<div style="background-color: yellow; width: 50px; text-align: center;" id="two"> 
    <a>World</a> 
</div> 

的JavaScript:

$("div").click(function (event) { 
    alert(event.currentTarget.id); 
}); 

這裏是一個jsFiddle

我們獲得服務器端邏輯,你需要有jQuery的單擊事件處理程序通過__doPostBack()調用回發到服務器上,像這樣:

$("div").click(function (event) { 
    __doPostBack(event.currentTarget.id,''); 
}); 

最後,在服務器端你將需要使用__EVENTTARGET值在Request對象,以確定哪個UI元素觸發回傳,這樣的:

if (IsPostBack) 
{ 
    string ControlID = string.Empty; 
    if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"])) 
    { 
     ControlID = Page.Request.Params["__EVENTTARGET"]; 
     Control postbackControl = Page.FindControl(ControlID); 

     // Do something with control, that caused post back, here 
    } 
} 
+1

我相信這更多的是CSS樣式和'padding'的問題,而不是jQuery。 – Alvaro

+1

哦,我閱讀標題'如何使div可點擊'不僅僅是一個CSS更改,因爲它需要發佈到服務器,但也許OP可以澄清這一點。 –

1

我想你可以使用:

<div onclick="javascriptFunction()"> 
Button Text 
</div> 
0

你可以使用jQuery來做到這一點。請看下面的代碼:

<div id="button"> 
     <asp:hyperlink> //or LinkButton 
    </div> 

    $("#button").click(function (event) { 
     // do whatever you want. 
    });