2012-01-17 100 views
0

因此,这里是我的小提琴无法隐藏弹出

http://jsfiddle.net/C4CcA/4/

的问题是,我不能够隐藏黄色弹出当我点击DIV2(因为它是可拖动)。如果我能捕获点击div2时触发的事件会好得多。

任何解决方法?

+0

的可能的复制http://stackoverflow.com/questions/1724743/using-jquery-setting-draggable -on-an-element-preventing-prevent-blur-from-firing-when-you – Pavan 2012-01-17 05:27:24

回答

0

添加此

$("#div2").draggable().click(function(ev) { 
    if (ev.target === this) { 
     $(this).focus(); 
    } 
}); 

否则,你可以使用delegateon

+0

这是做什么的,它是否在点击时调用div2上的焦点事件,而不是单击文本框时调用它 – Skyrim 2012-01-17 05:34:45

0

一个小变通

$(function(){ 
    $("#div2").draggable(); 

    $("#txtbox").click(function(event){ 
     event.stopPropagation(); 
     $("#colorpicker").show(); 
    }); 

    $("#txtbox").blur(function(){ 
     $("#colorpicker").hide(); 
    }); 

    $('#div2').click(function() { 
     $("#colorpicker").hide(); 
    }); 
}); 

我只是停止传播,当你点击文本框DIV2。否则,它会再次隐藏colorbox。

0

我设法用鼠标按下事件

$("#div2").mousedown(function() { 
    $("#colorpicker").hide(); 
    $("#txtbox").blur(); 
}); 

做的小提琴是在这里 - http://jsfiddle.net/C4CcA/19/