jquery弹出取消事件

jquery弹出取消事件,jquery,Jquery,我有一个(visibility:hidden)div,上面有一个下拉菜单和一个jQuery日期选择器。 此div是当用户单击输入字段时显示的弹出窗口 当用户单击页面上的任何其他位置时,需要显示弹出窗口。 隐藏弹出窗口的代码如下所示: jQuery('.datepicker-popup').live("focusout", function() { var id = jQuery(this).attr('id'); id = id.substring(17); // datepi

我有一个(visibility:hidden)div,上面有一个下拉菜单和一个jQuery日期选择器。 此div是当用户单击输入字段时显示的弹出窗口

当用户单击页面上的任何其他位置时,需要显示弹出窗口。 隐藏弹出窗口的代码如下所示:

jQuery('.datepicker-popup').live("focusout", function() {
    var id = jQuery(this).attr('id'); 
    id = id.substring(17); // datepicker-popup-#  
    jQuery('#datepicker-popup-'+id).fadeTo(500, 0.0, function() {
        jQuery('#datepicker-popup-'+id).css('visibility', 'hidden');
    });
});
使用jquery1.4

现在的问题是,当用户单击日期选择器上方的下拉菜单或日期选择器本身(月/年)的下拉菜单时,弹出窗口会消失。例如,当用户使用div中的(某些)元素时,代码正在执行,这显然需要以某种方式加以防止

我该怎么做才对呢

编辑:

但是这根本不起作用。

灯箱通常要做的事情(或者至少我以前看到过自己做过并实现过的事情)是在覆盖整个页面的弹出窗口下方添加一个DIV,然后在关闭弹出窗口的窗口上附加一个
click
事件。 你需要对此进行适当调整,但这是最基本的想法

jQuery('.datePickerTriggerElement').click(function(){
  var picker = jQuery('.datepicker-popup');
  jQuery('<div></div>').css(
    height: body.height(), 
    width: body.width(), 
    position: 'absolute',
    'z-index': -1,
    top: picker.offset().top*-1, 
    left: picker.offset().left*-1
  }).click(function(){
     picker.trigger('focusout'); // or the body of your focusout callback
     $(this).hide(); // or remove if you dont wan to reuse.
  }).prependTo(picker); 
});
jQuery('.datePickerTriggerElement')。单击(函数(){
var picker=jQuery('.datepicker弹出窗口');
jQuery(“”).css(
高度:body.height(),
宽度:body.width(),
位置:'绝对',
“z索引”:-1,
top:picker.offset().top*-1,
左:picker.offset().left*-1
})。单击(函数(){
picker.trigger('focusout');//或focusout回调的主体
$(this).hide();//如果不想重复使用,请删除。
}).prependTo(选取器);
});

能否提供示例代码?如果我附加一个DIV,它似乎只在弹出窗口下方可用,或者我必须指定高度/宽度(如果这有帮助的话)?请参阅编辑了解基本想法-我建议查看jquery ui对话框或类似性质的东西,因为它使用类似的方法,但无疑有更好的代码:-)您提供的代码似乎没有编译css属性:(已删除多余的“}”,没有多余的}…我在css中错过了一个{,应该是
.css({/*props/vals*/})
好吧,我的错,但是它仍然不起作用,我似乎找不到带前缀的DIV元素(在Chrome-inspect元素中),如果我加入背景色并将z-index设置为更高的值,也不会看到它。为什么你需要重新发明轮子?!…有太多这样的插件,它们都工作得很好!sry palUsing插件几乎总是带来很多我不会使用的代码。如果可以通过使用标准库进行一些努力来完成,我会选择他是那样做的。
jQuery('select').click(function(event){
  event.stopPropagation();
});
jQuery('.datePickerTriggerElement').click(function(){
  var picker = jQuery('.datepicker-popup');
  jQuery('<div></div>').css(
    height: body.height(), 
    width: body.width(), 
    position: 'absolute',
    'z-index': -1,
    top: picker.offset().top*-1, 
    left: picker.offset().left*-1
  }).click(function(){
     picker.trigger('focusout'); // or the body of your focusout callback
     $(this).hide(); // or remove if you dont wan to reuse.
  }).prependTo(picker); 
});