页面点击经常会有这样的需求,点击某元素之外的地方将指定元素给隐藏起来。
如上图,需要点击页面中除下拉框区域(下拉树,文本框,下拉箭头)之外的元素,隐藏下拉框。
页面元素点击事件绑定:
$(document).on('click',':not(.combo_tree_panel)',function(){
$combotreePanel.hide();
return;
})
这样就可以监听除了下拉框区域之外的点击事件,将下拉面板给隐藏起来。
但是这样点击下拉框区域中的任意元素,还是会隐藏下拉面板,
.combo_tree_panel这个元素区域也属于document范围内,这里发生了事件冒泡。bubble..oO.....
所以还要在下拉框区域的单击事件中阻止事件冒泡。
$(".combo_tree_panel").click(function(event){
event.stopPropagation();
});
注:jQuery对event的阻止冒泡处理已作了兼容性处理,stopPropagation();
jQuery.Event.prototype = {
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if stopPropagation exists run it on the original event
if ( e.stopPropagation ) {
e.stopPropagation();
}
// otherwise set the cancelBubble property of the original event to true (IE)
e.cancelBubble = true;
}
}