jQuery UL列表如何隐藏div和隐藏下拉列表

时间:2013-03-06 11:30:40

标签: jquery

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并再次单击下拉列表?

2 个答案:

答案 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...
    }
});