2011-05-10 74 views
0

我有一個列出我的聯繫人的頁面,每個聯繫人都包含在一個div中,onClick打開一個模式對話框,顯示有關該聯繫人的更多信息。不想要對話框打開

現在,在頁面上,每個聯繫人都列出了姓名和電子郵件,並且如上所述,點擊用戶「框」會導致顯示對話框。但是我希望它能讓我點擊電子郵件(鏈接當然),對話框不會顯示,而是默認郵件處理程序打開。

它的工作方式現在默認郵件處理程序(outlook)打開並且用戶對話框也打開了...我嘗試銷燬並關閉對話框,當我點擊電子郵件但對話框可能打開後.. 。

有什麼好的解決辦法?

編輯:我覺得我有一些很好的答案,但它需要一些收養......如果我的網頁上的代碼是什麼樣子的:當我點擊的userMail中的onClick

<ul id="users"> 
    <li onClick="OpenUserDialog(usersId);"> 
     blablala 
     <span onClick="OpenMail(usersMail);">usersMail<span> 
    </li> 
</ul> 

所以<li>也運行,但我不想那樣。

+0

能否請您提供一些代碼,以便我們可以幫助您在可以按照你實現一個更好的辦法 – Marthin 2011-05-10 09:37:12

回答

3

您可以選擇郵件聯繫,並在他們的處理程序,取消該事件的傳播。

假設一個HTML佈局是這樣的:

<div class="popupOpener"> 
    <a href="mailto:[email protected]">mail me</a> 
</div> 

那就試試這個代碼:響應

$('div.popupOpener').click(function() { 
    openPopup(); 
}); 

$('a[href^="mailto:"]').click(function (e) { 
    e.stopPropagation(); 
}); 

更新編輯:

你應該避免附加事件元素以這種方式。您已經在使用jQuery,並且擅長這個確切的任務。改變你的HTML看起來像這樣:

<ul id="users"> 
    <li data-userId="usersId"> <!-- I assume this is coming from the server --> 
     blablala 
     <a href="mailto:usersMail">usersMail</a> 
    </li> 
</ul> 

然後這個jQuery將工作:

$('#users') 
    .children('li') 
    .click(function() { 
     openPopup($(this).data('userId')); // not 100% sure on the syntax here 
    }) 
    .children('a') 
    .click(function (e) { 
     e.stopPropagation(); // this stops the event from going any further (and 
          // reaching the <li>, but doesn't stop the default 
          // browser behaviour (which is to open the link) 
    }) 
; 
+0

請看我的編輯 – Jason94 2011-05-10 10:07:10

+0

@Jason see * my * edit – nickf 2011-05-10 11:11:14

0

這聽起來像你需要停止傳播的onclick事件,jQuery中例如

$("#myDiv").click(function(event){ 
    event.stopPropagation(); 
}); 
+0

你需要停止傳播,然後到達div – nickf 2011-05-10 09:26:11