Jquery - 隐藏在文档上的任何位置

时间:2010-12-20 00:48:55

标签: javascript jquery events

我有一个div,只要你在它外面点击它就会隐藏但是我在使用div中的某些链接工作时遇到了一些麻烦(而不是隐藏div)。

$(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>

2 个答案:

答案 0 :(得分:2)

这可能是live()点击事件处理程序的问题。当您使用live时,事件处理程序实际上附加到文档。因此,事件需要冒泡到文档,但fav上的点击事件处理程序会阻止冒泡。

但它适用于delegate

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

此处,事件处理程序已添加到fav

DEMO

答案 1 :(得分:0)

我认为您的fav代码阻止了'B'链接的运行。而不是.live(),尝试:

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

代替。