Javascript 获取元素编号或为其设置标识符
我有一个用HTML动态修改的列表。像这样:Javascript 获取元素编号或为其设置标识符,javascript,jquery,Javascript,Jquery,我有一个用HTML动态修改的列表。像这样: <ol> <li>Some value<li> <li>another</li> <li>more</li> <li>more<li> <li>more</li> </ol> 一些价值 另一个 更多 更多 更多 我想做的是,当用户单击列表中的某个元素时,我想调用一个函数并传递一个数值参
<ol>
<li>Some value<li>
<li>another</li>
<li>more</li>
<li>more<li>
<li>more</li>
</ol>
一些价值
另一个
更多
更多
更多
我想做的是,当用户单击列表中的某个元素时,我想调用一个函数并传递一个数值参数,该参数表示该
相对于父
的偏移量
我该怎么做
我正在使用jQuery。结合使用
on()
(用于绑定最小事件处理程序并处理您提到的动态更新)和index()
方法来确定元素相对于其父元素的索引
$("ol").on("click", "li", function() {
yourFunction($(this).index());
});
如果您没有jQuery
var ol = document.querySelector("ol");
var olLi = ol.querySelectorAll("li");
var handleClick = function(e) {
var target = e.target;
var index = 0;
while (target = target.previousElementSibling) {
index++;
}
yourFunction(index);
};
ol.addEventListener("click", handleClick);
var ol = document.getElementsByTagName("ol")[0];
var olLi = ol.getElementsByTagName("li");
var handleClick = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
var index = 0;
while (target = target.previousSibling) {
(target.nodeType == 1) && (index++);
}
yourFunction(index);
};
ol.addEventListener && ol.addEventListener("click", handleClick);
ol.attachEvent && ol.attachEvent("onclick", handleClick);
如果您必须支持没有jQuery的旧浏览器
var ol = document.querySelector("ol");
var olLi = ol.querySelectorAll("li");
var handleClick = function(e) {
var target = e.target;
var index = 0;
while (target = target.previousElementSibling) {
index++;
}
yourFunction(index);
};
ol.addEventListener("click", handleClick);
var ol = document.getElementsByTagName("ol")[0];
var olLi = ol.getElementsByTagName("li");
var handleClick = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
var index = 0;
while (target = target.previousSibling) {
(target.nodeType == 1) && (index++);
}
yourFunction(index);
};
ol.addEventListener && ol.addEventListener("click", handleClick);
ol.attachEvent && ol.attachEvent("onclick", handleClick);
.您可以为此使用.index()
var selectedIndex = $("#yourID").index() + 1;
这是从1开始的指数哦,好吧,那太快了。谢谢。我不确定OP是否希望他们的索引1为基础。是的,但OP没有提到这是一个要求。