Javascript 给出一个onclick函数,该函数将对具有特定类的每个元素执行
我将如何制作这样的东西-我有多个元素与某个类,我希望这样做: 元素1-onclick激发函数13 元素2-onclick激发函数27 元素3-onclick激发函数81 我正在动态加载这些元素,因此无法手动将其放入js文件中。当我用php加载它们时,我也不能给它们一个onclick。 我正在寻找一个纯粹的js答案,所以请不要jQueryJavascript 给出一个onclick函数,该函数将对具有特定类的每个元素执行,javascript,html,onclick,Javascript,Html,Onclick,我将如何制作这样的东西-我有多个元素与某个类,我希望这样做: 元素1-onclick激发函数13 元素2-onclick激发函数27 元素3-onclick激发函数81 我正在动态加载这些元素,因此无法手动将其放入js文件中。当我用php加载它们时,我也不能给它们一个onclick。 我正在寻找一个纯粹的js答案,所以请不要jQuery function setMyHandler(){ var elements = document.getElementsByClassName('some
function setMyHandler(){
var elements = document.getElementsByClassName('someClass');
for(var i = 0; i < elements.length; i++){
elements[i].onclick = function(){};
}
}
但我最好还是用你的活动代表。在根元素上设置处理程序。并检查event.target 方法1
在PHP代码中,使用onclick标记创建元素,并将预期输入函数
<div class="someclass" onclick="someFunction(1)"></div>
方法2
加载页面时,使用给定的类名遍历所有元素,并将侦听器附加到这些元素。要使这种方法起作用,div必须具有将在任意标记中包含的SomeFunction中输入的数字
<div data="13" > =) </div>
window.onload = function() {
for (var i =0; i < document.getElementsByClassName("classname").; i++){
var Div = document.getElementsByClassName("classname")[i];
Div.addEventListener("click", function(){
someFunction(Div.data);
});
}
}
可以通过将事件侦听器附加到父元素来委派事件。要获取目标元素,可以使用event.target 以下是您如何实现它的示例代码:
var parentElement = document.querySelector("#parent");
parentElement.addEventListener("click", function () {
var currentTarget = event.target;
if (currentTarget.tagName === "LI") { // If you want LI to be clickable
currentTarget.style.backgroundColor = "#eee";
currentTarget.style.color = "#606060";
}
});
下面是相同的JSFIDLE:最简单的方法是为元素提供一个数据属性,其中包含要运行的函数的参数:
<div class="someclass" data-parameter="12">
<div class="someclass" data-parameter="13">
<div class="someclass" data-parameter="14">
它们只是三个要素吗?如果不是,那么在elementN的某个函数中y的值应该是多少?请提供一个JSFIDLE或其他更好地理解您的问题的工具。阅读您的问题,您似乎可以使用事件委派来解决您的问题。@davidmatas该问题已全部回答完毕。谢谢,这是否适用于任意标记?这些标签会干扰其他代码吗?是的,这适用于任意命名的标签。不,它们不应该干扰任何其他代码!非常感谢我将您的答案和@jsm的答案结合起来:因为我不能发布另一个新问题,所以我必须在这里问您-例如,我如何获得父元素中单击元素的索引?比如,如果我点击第三个元素,它会返回数字3?我对现有的小提琴做了改进。签出链接:对于一般推荐方法,签出此小提琴:
function setMyHandler(){
var elements = document.getElementsByClassName('someclass');
for(var i = 0; i < elements.length; i++){
elements[i].onclick = function(){ myFunction(this.data.parameter); };
}
}