编程语言
首页 > 编程语言> > javascript – 如何从ul li中触发onb​​lur?

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

作者:互联网

我基本上是在点击时突出显示每个li,并且想要在单击其他地方或标记时(通过影响background-color属性)“取消突出显示”所点击的li.

这种行为基本上是模仿< 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);
    };

解决方法:

既然你已经在使用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属性来为列表项添加焦点功能.

标签:jquery,javascript,css,javascript-events,html-lists
来源: https://codeday.me/bug/20190709/1409013.html