2010-10-13 75 views
1

我有一个div显示,当我按下一个按钮,隐藏当我在任何地方按下。Jquery - 文档点击禁用回传?

jQuery(document).ready(function() { 
    $(document).click(function (e) { 
     if (e.button == 0) { 
      $('#DivToHide').hide(); 
     } 
    }); 

    //If its own, return 
    $('#DivToHide').click(function() { 
     return false; 
    }); 
    //If it is the button to triger Display, return 
    $('#DisplayDivButton').click(function() { 
     return false; 
    }); 
}); 

这工作不错,除了:DivToHide包含一个链接按钮,这使得回调。但是当我启用上面的代码时,它不会进行回调。并非所有的东西都在更新面板中。 谢谢。

回答

0

没有对准div容器#DivToHide ..

目标实际的链接里面

//If its own, return 
//this will make all links inside DivToHide to cancel default action.. 
$('#DivToHide a').click(function() { 
    return false; 
}); 

虽然,如果你有这里面更多的链接,你最好添加一个ID的链接,直接针对它..

更新之后评论

您应该使用链接上的event.stopPropagation();停止冒泡到其他元素的事件。

$('#DivToHide a').click(function (event) { 
     event.stopPropagation(); 
    }); 
+0

@Karalahana,更新了我的答案.. – 2010-10-13 08:30:39

+0

是的,这完全是我需要的。非常感谢你。 – 2010-10-13 08:59:59

0

如果返回false这将防止事件的默认操作的执行。

当您单击DIV里面的链接,首次登记的DIV单击处理程序,并返回false,停止自身实际接收click事件的基本环节。

我认为这就是为什么你的链接无法正常工作的原因,但我不知道为什么你在#DivToHide上有一个处理程序,你不能只是删除它,让文档句柄上的点击处理程序隐藏DIV和显示DIV的DisplayDivButton句柄上的点击处理程序?

+0

谢谢,我使用DisplayDivButton打开div。但由于文档点击,当我按下div内的任何位置时,它隐藏自身,这是一个意外的行为。为了解决这个问题,我使用$( '#DivToHide')。点击(函数(){返回false})这样可以防止隐藏。但我怎么能释放我的linkbutton DivToHideClick和doccumnet点击,我不知道。 – 2010-10-13 07:53:55

+0

够公平的。我已经看到现在发布的解决方案,所以猜测它是固定的,我想我误解了你一点。 – EMMERICH 2010-10-13 09:37:25