2010-12-20 55 views
4

我有一個div,只要你點擊它就可以隱藏,但我有一些麻煩讓div內的某些鏈接工作(而不是隱藏div)。jquery - 隱藏點擊文檔上的任何地方

$(document).click(function() { 
    fav.hide(); 
}); 
theDiv.click(function(e) { 
    e.stopPropagation(); 
}); 

這就是我對整個點擊外部和關閉事件。繼承人的事情:我有兩種類型的鏈接在我的div,一個常規鏈接和另一個是一個JavaScript的。常規的重定向確定,但JavaScript沒有做任何事情。

有人能幫我嗎?謝謝。

編輯:

這裏有可能助陣

var fav = $('#favorites'); 

// Open & close button 
$('#favorites_a').click(function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    fav.toggle(); 
}); 

$('a.c',fav).live('click', function(e) { 
    alert('hey'); 
}); 

$(document).click(function() { 
    fav.hide(); 
}); 

fav.click(function(e) { 
    e.stopPropagation(); 
}); 

HTML我的代碼位(頁面加載後建):

<div id="favorites"> 
    <div class="wrap"> 
     <ul><li><a href="/abc" class="p">A</a><a href="#" class="c">B</a></li></ul> 
    </div> 
</div> 
+0

javascript one鏈接是怎麼樣的?你用e.preventDefault()來試試嗎? – rapadura 2010-12-20 00:52:05

+0

你會發布你的HTML和JS代碼。 – Lex 2010-12-20 00:52:07

+0

@AntonioP:是的。 @Lex:我編輯了這篇文章。 – RS7 2010-12-20 01:08:23

回答

2

這可能是live()單擊事件處理程序的問題。當您使用live時,事件處理程序實際上已附加到文檔。因此,該事件需要冒泡到文檔中,但您的點擊事件處理程序fav可防止冒泡。

它與delegate雖然:

fav.delegate('a.c', 'click', function(e) { 
    alert('hey'); 
}); 

這裏,事件處理程序被添加到fav

DEMO

+0

完美地工作,謝謝。 – RS7 2010-12-20 01:44:31

0

我覺得你的代碼fav是阻止'B'鏈接工作。而不是.live(),請嘗試:

$('a.c').click(function() { ... }); 

改爲。

相關問題