Javascript 有没有办法动态地将onclick事件应用于大型li列表?
好的,我有一个无序的列表如下:Javascript 有没有办法动态地将onclick事件应用于大型li列表?,javascript,Javascript,好的,我有一个无序的列表如下: <ul id=list> <li> Item 1 </li> <li> Item 2 </li> <li> Item 3 </li> <li> Item 4 </li> <li> Item 5 </li> </ul> 再说一次,有什么简单的方法吗?我知道我可以通过简单地为每个李个人
<ul id=list>
<li> Item 1 </li>
<li> Item 2 </li>
<li> Item 3 </li>
<li> Item 4 </li>
<li> Item 5 </li>
</ul>
再说一次,有什么简单的方法吗?我知道我可以通过简单地为每个李个人添加一个onclick事件来实现这一点,但是有什么聪明的方法可以做到这一点吗
(为了澄清-我实际上将使用移动webkit的“ontouchstart”事件)在forloop中遍历它们 并向每个添加“.onclick=someFunction”代码
项目1
项目2
项目3
项目4
项目5
var parentNode=document.getElementById('list');
var theChilds=parentNode.getElementsByTagName(“LI”);
for(var i=0;i
请参见此处:在forloop中遍历它们 并向每个添加“.onclick=someFunction”代码
项目1
项目2
项目3
项目4
项目5
var parentNode=document.getElementById('list');
var theChilds=parentNode.getElementsByTagName(“LI”);
for(var i=0;i
请参见此处:尝试使用或之类的库
例如,dojo:
dojo.query("#list li").connect("onclick", function(){alert("Ho!");});
在jquery中:
$("#list li").click(function(e){ alert("Yo!");});
尝试使用诸如或之类的库
例如,dojo:
dojo.query("#list li").connect("onclick", function(){alert("Ho!");});
在jquery中:
$("#list li").click(function(e){ alert("Yo!");});
使用jquery:
$("#list li").click(function(){
$(this).css('background-color', '... your background color ...');
$(this).css('color', '... your font color ...');
})
使用jquery:
$("#list li").click(function(){
$(this).css('background-color', '... your background color ...');
$(this).css('color', '... your font color ...');
})
如果您不想使用任何第三方库,如jQuery,可以尝试以下方法
var parentNode = document.getElementById('list');
parentNode.onclick=function(e){
e = e || event;
var target = e.originalTarget || e.srcElement;
if(target.nodeName == "LI"){
alert(target.innerHTML);
}
}
代码使用javascript。它将有助于减少页面中注册的单击事件的数量,并有助于提高性能
但我强烈要求您考虑使用一些成熟的库,例如
使用jquery,它将非常简单
$("#list").delegate("li", "click", function(){
$(this).css('background-color', 'your color');
$(this).css('color', 'your color');
});
我建议使用,因为它将有助于减少页面中注册的单击事件数。如果您不想使用任何第三方库,如jQuery,可以尝试
var parentNode = document.getElementById('list');
parentNode.onclick=function(e){
e = e || event;
var target = e.originalTarget || e.srcElement;
if(target.nodeName == "LI"){
alert(target.innerHTML);
}
}
代码使用javascript。它将有助于减少页面中注册的单击事件的数量,并有助于提高性能
但我强烈要求您考虑使用一些成熟的库,例如
使用jquery,它将非常简单
$("#list").delegate("li", "click", function(){
$(this).css('background-color', 'your color');
$(this).css('color', 'your color');
});
我建议使用,因为它将有助于减少页面中注册的单击事件数。您也可以调用函数并发送li的id。这意味着您必须为每个li设置一个id。但是你当然可以在for循环中这样做,你也可以调用一个函数并发送li的id。这意味着您必须为每个li设置一个id。但您当然可以在for循环或类似的方式中执行此操作。+1表示事件委派。这是这里唯一明智的做法。可能需要从单击的元素向上遍历DOM以找到
li
。是的,您是对的。如果li
中有需要的子元素,那么毫无疑问jQuery要简单得多,我可能应该在生产系统中使用它,但是我仍在学习JavaScript的基础知识,希望在为我预先打包之前真正了解我在做什么。。。感谢您向我展示这两种选择,非常感谢。:-)+活动代表团1人。这是这里唯一明智的做法。可能需要从单击的元素向上遍历DOM以找到li
。是的,您是对的。如果li
中有需要的子元素,那么毫无疑问jQuery要简单得多,我可能应该在生产系统中使用它,但是我仍在学习JavaScript的基础知识,希望在为我预先打包之前真正了解我在做什么。。。感谢您向我展示这两种选择,非常感谢。:-)