2011-08-09 27 views
3

一個div鏈接我有一個div包含一些內容,其中也有一些聯繫。該div本身手錶的click事件,因此它可以使內容編輯。不過,我希望用戶能夠點擊div內的鏈接,並將它定位到鏈接的頁面,而不是編輯內容(點擊其他任何地方div應雖然編輯內容)。我如何實現這一目標?點擊允許通過綁定到「click」事件

代碼示例:

<div id="content"> 
    Here's a <a href="http://google.com">link</a>. 
</div> 

// jQuery Javascript: 
$("#content").click(function() { 
    // Make content editable 
}); 

(點擊鏈接不應使內容編輯,而是應該直接在頁面google.com

編輯:我用我自己的代碼使內容可編輯(用文本區域切換div,諸如此類)。

+0

你有沒有嘗試結合這個鏈接是一個點擊處理程序嗎? –

+0

你使用的是可編輯內容的插件嗎? – kinakuta

+0

哇,所有的答案看起來都是他們的工作,哪一個是最優雅的? – Chetan

回答

6

檢查活動對象並返回true

$("#content").click(function(e) { 
    if ($(e.target).is('a')) { 
     return true; 
    } 
}); 

未測試

這背後的想法是從處理器紓困得早,通過返回true,讓瀏覽器處理該事件是通常的方式。

+0

這麼簡單 - 讓我看起來像這樣亂七八糟(它有點反正) – yoozer8

0

您可以更改鏈接的Z-索引是比格(不知道這將工作)的更大,或者你可以把另一個DIV中的各個環節具有比主DIV更高的Z-索引。這將防止在主DIV的點擊次數,所以一定要確保二次div的正確尺寸,以免防止編輯功能

0
$('#content a ').live("click", function(event){ 
    event.stopPropagation(); 
}); 

這將這樣的伎倆

1

example

使用你有event.stopPropagation()

// jQuery Javascript: 
$(".content").click(function(e) { 
    // make content editable 
}); 

$('.content a').click(function(e) { 
    e.stopPropagation(); 
}); 
2

的一個錯誤是,你正在使用content作爲類在你的HTML中,但作爲你的jQuery中的ID。所以,你應該你的HTML改爲id="content"(假設你的頁面上沒有其他的元素已經有ID

你的JavaScript可以關注一下。

$("#content").click(function(){ 
    this.setAttribute('contenteditable', 'true'); 
    $(this).focus(); 
}).blur(function(){ 
    this.setAttribute('contenteditable', 'false'); 
}); 

$("#content a").click(function(e){ 
    e.stopPropagation(); 
}); 

這裏有一個的jsfiddle:http://jsfiddle.net/q77Bs/

+0

哇,我不知道'contenteditable'。棒極了! – Chetan

+0

如果您在新選項卡/窗口中打開鏈接,單擊鏈接時阻止「可編輯」行爲就變得非常重要。即使你不是,但讓內容變得可編輯並讓頁面消失是一種奇怪的視覺效果。 – Chetan

+0

此外,JSFiddle在Safari 5.1中不起作用(單擊鏈接不會進入頁面,只是使內容可編輯)。 – Chetan