Javascript 是否可以为已排序列表项的编号设置单击事件?
在HTML文档中,是否可以仅为有序列表中的列表项(Javascript 是否可以为已排序列表项的编号设置单击事件?,javascript,html,onclick,html-lists,onclicklistener,Javascript,Html,Onclick,Html Lists,Onclicklistener,在HTML文档中,是否可以仅为有序列表中的列表项(li)或项目符号(ol)的编号设置单击事件 我希望能够点击号码,然后做一些处理。到目前为止,我有两个想法,但我希望有其他方法来处理正常有序的列表: 使用CSS计数器将数字注入我将放置在数字所在位置的元素中 绝对位置从关联列表项内部将透明元素置于数字上方 下面是列表的一个示例。我希望能够单击显示为1.、2.或3.的零件 HTML源代码: <ol> <li>First Item</li> <l
li
)或项目符号(ol
)的编号设置单击事件
我希望能够点击号码,然后做一些处理。到目前为止,我有两个想法,但我希望有其他方法来处理正常有序的列表:
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
使用这个类,只需使用z-index就可以了
.all {
margin-left:-30px;
padding-left: 30px;
}
对于RTL方向:
.all {
margin-right:-30px;
padding-right: 30px;
}
i、 e:使用这个类,只需使用z-index,就可以了
.all {
margin-left:-30px;
padding-left: 30px;
}
对于RTL方向:
.all {
margin-right:-30px;
padding-right: 30px;
}
i、 e:应用@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);
});
[].slice.call(document.queryselectoral('ol,ul')).forEach(函数(列表){
for(var s,el=list.firstElementChild;el;el=el.nextElementSibling)
el.innerHTML=''+el.innerHTML+'';
list.addEventListener('click',函数(ev){
如果(ev.target.tagName!==“SPAN”)
for(var el=this.firstElementChild;el;el=el.nextElementSibling)
el.className=el==ev.target“已选定”:“;
},假);
});
参见fiddle at应用@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);
});
[].slice.call(document.queryselectoral('ol,ul')).forEach(函数(列表){
for(var s,el=list.firstElementChild;el;el=el.nextElementSibling)
el.innerHTML=''+el.innerHTML+'';
list.addEventListener('click',函数(ev){
如果(ev.target.tagName!==“SPAN”)
for(var el=this.firstElementChild;el;el=el.nextElementSibling)
el.className=el==ev.target“已选定”:“;
},假);
});
参见fiddle at您只能将事件分配给HTML/DOM元素,列表项前面的数字是该元素的一部分。因此,你的想法2可能是实现这一目标的唯一途径#3将为整个列表分配一个处理程序,并检查单击点…可能与哪个浏览器重复?在Chrome中,这个功能非常有效。请看@HBP,我只想在点击数字时触发点击,而不是整个
li
。我想我可以将所有内容包装在li
中,并捕获/忽略单击事件,但我希望有一种简单的方法可以访问列表项的数字,但根据Teemu的说法,这似乎不可能。现在我倾向于选项2。对不起,我误解了你的问题,我将对其进行编辑以使其更清楚@那么Fellexe为您提供了正确的解决方案。我已经更新了我的fiddle来执行您要求的操作。您只能将事件分配给HTML/DOM元素,列表项前面的数字是该元素的一部分。因此,你的想法2可能是实现这一目标的唯一途径#3将为整个列表分配一个处理程序,并检查单击点…可能与哪个浏览器重复?在Chrome中,这个功能非常有效。请看@HBP,我只想在点击数字时触发点击,而不是整个li
。我想我可以将所有内容包装在li
中,并捕获/忽略单击事件,但我希望有一种简单的方法可以访问列表项的数字,但根据Teemu的说法,这似乎不可能。现在我倾向于选项2。对不起,我误解了你的问题,我将对其进行编辑以使其更清楚@那么Fellexe为您提供了正确的解决方案。我已经更新了我的提琴来完成你要求我做的事情。我对提琴做了一点小小的修改,以填充列表项的整个区域。很好,这就是它的全部内容。我对提琴做了一点小小的修改,以填充列表项的整个区域。很好,这就是它的全部内容。