如何从ul li中触发onb​​lur?

时间:2013-07-15 20:31:27

标签: javascript jquery css javascript-events html-lists


我基本上会在点击时突出显示每个li,并希望在点击其他位置或标签显示时(通过影响li属性)“取消突出显示”所点击的background-color

这种行为本质上会模仿<select>的'突出显示行为......我但使用select,因为我想在列出的项目中嵌套HTML - 无法使用<option> 执行此操作。

我正在尝试使用onblur,这是行不通的......



这是HTML:

<ul id = "list">
    <li>asdf</li>
    <li>qwerty</li>
<ul>


......这是CSS:

    #list {
        list-style-type: none;
    }


......这里是jQuery / javascript:

    function getEventTarget(e) {
        e = e || window.event;
        return e.target || e.srcElement; 
    }

    function highlightSelection(selection) {
        alert("It worked!");
        $(selection).css("background-color","#FFFF00");
    }

    // this function is not being triggered:
    function removeHighlight(selection) {
        $(selection).css("background-color","none");
    }

    var ul = document.getElementById("list");

    ul.onclick = function(event) {
        var target = getEventTarget(event);
        highlightSelection(target);
    };

    // this event is not working:
    ul.onblur = function(event) {
        var target = getEventTarget(event);
        removeHighlight(target);
    };

2 个答案:

答案 0 :(得分:1)

因为你已经在使用JQuery ......

<ul id = "list">
     <li tabindex="1">asdf</li>
     <li tabindex="2">qwerty</li>
 <ul>


var ul = $("#list");
ul.on('click focus','li',function(){
    $(this)
        .css("background-color","#FFFF00")
        .siblings().css('background','');
}).on('blur','li',function(){
    $(this).css('background','');
});

http://jsfiddle.net/mc4tN/2/

当你离开列表项时,我不确定你想要的效果......似乎你只想让它突出显示。您可以为列表项添加焦点功能,方法是为其提供tabindex属性。

答案 1 :(得分:0)

li s不blur,因为它们没有关注。尝试使用mouseoutmouseleave