jQuery('div').not("#supcont").bind('click', function() {
jQuery("#supcont").slideUp("slow");
});
在:
jQuery("#supcont").click();
不排除#supcont
之类的行为。为什么呢?
答案 0 :(得分:4)
should work fine。我认为可能没有的唯一原因是,#supcont
元素是div
的后代,并且当点击事件冒出时,div
会收到它。为防止发生这种情况,您可以使用事件对象的stopPropagation
方法:
jQuery('div').not("#supcont").bind('click', function(e) {
e.stopPropagation();
jQuery("#supcont").slideUp("slow");
});
更新(见评论)
实际上,如果#supcont
是另一个div
的后代,上述内容对您无效,您需要在#supcont
上捕获该事件并将其停在那里。因此,将click事件处理程序绑定到#supcont
:
jQuery("#supcont").click(function(e) {
e.stopPropagation();
});
答案 1 :(得分:3)
您应该在整个<div>
上添加单个事件处理程序,而不是向页面上的每个document
标记添加事件。您应该检查使用事件委派和“冒泡”的方法。
答案 2 :(得分:1)
另一种写这个的方法是:
$('div').click(function() {
if(!$(this).is('#supcont'))
$('#supcont').slideUp("slow");
});
$('#supcont').click()