是否可以为有序列表项的编号设置单击事件?

时间:2013-05-31 22:36:07

标签: javascript html onclick html-lists onclicklistener

在HTML文档中,是否可以仅为有序列表中的列表项(li)或项目符号(ol)设置点击事件?

我希望能够点击该号码,然后进行一些处理。到目前为止,我有两个想法,但希望还有其他方法可以使用正常的有序列表:

  1. 使用CSS计数器将数字注入我将放置数字的元素。
  2. 绝对位置是相关列表项内部数字的透明元素。
  3. 以下是该列表的示例。我希望能够点击显示为1.2.3.的部分。

    HTML来源:

    <ol>
        <li>First Item</li>
        <li>Second Item</li>
        <li>Third Item</li>
    </ol>
    

    浏览器中的结果:

    1. First Item
    2. Second Item
    3. Third Item
    

2 个答案:

答案 0 :(得分:2)

使用这个类,只需使用z-index,就可以实现它。

.all {
    margin-left:-30px;
    padding-left: 30px;
}

用于RTL方向:

.all {
    margin-right:-30px;
    padding-right: 30px;
}

即:http://jsfiddle.net/ESQKV/

答案 1 :(得分:2)

应用@Fallexe建议但在JS中添加跨度:

[].slice.call (document.querySelectorAll ('ol, ul')).forEach (function (list) {
    for (var s, el = list.firstElementChild; el; el = el.nextElementSibling)
      el.innerHTML = '<span>' + el.innerHTML + '</span>';

    list.addEventListener ('click', function (ev) {
        if (ev.target.tagName !== 'SPAN')
          for (var el = this.firstElementChild; el; el = el.nextElementSibling)
              el.className = el === ev.target ? 'selected' : '';
    }, false);    
});

请参阅http://jsfiddle.net/jstoolsmith/6nxeT/

小提琴