HTML:
<div id="colourlist">test 1</div>
<ul id="colours">
<li value="1">test 1</li>
<li value="2">test 2</li>
<li value="3">test 3</li>
<li value="4">test 4</li>
</ul>
<div id="preview"></div>
jQuery的:
$("#colours li").on('mouseenter', function(){
$("#colours li").removeClass("hilight");
$(this).addClass("hilight");
var O = $(this).offset();
var CO = $("#colours").offset();
$("#preview").css("top", O.top-150).show();
$("#preview").css("left", CO.left+160);
}).on('click', function(){
var text = $(this).text();
$("#colourlist").text(text);
$("#colours").hide();
$("#preview").hide();
});
$("#colourlist").on('click', function(e){
e.preventDefault();
$("#colours").toggle();
});
这是jsfiddle:http://jsfiddle.net/CJbeF/48/
如何在UL下拉列表外单击时隐藏下拉菜单和预览?
如何在下拉列表打开时隐藏预览div并再次单击下拉列表?
答案 0 :(得分:1)
您可以添加此事件处理程序:
$("#colours").on('mouseleave', function(){
$("#colours").hide();
$("#preview").hide();
});
这是一个小提琴: fiddle
答案 1 :(得分:0)
为什么不在.on()中尝试多个事件。
$("#colours li").on({
mouseenter: function() {
// Handle mouseenter...
},
click: function() {
// Handle click...
}
});