1

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?

4

2 回答 2

1

您可以添加此事件处理程序:

$("#colours").on('mouseleave', function(){
    $("#colours").hide();
    $("#preview").hide(); 
});

这是一个小提琴: 小提琴

于 2013-03-06T11:35:31.840 回答
0

为什么不在 .on() 中尝试多个事件。

$("#colours li").on({
    mouseenter: function() {
        // Handle mouseenter...
    },
    click: function() {
        // Handle click...
    }
});
于 2013-03-06T11:33:23.973 回答