这是我的snippet。
除了将事件监听器附加到类的每个元素之外,还有其他方法吗? 如果可能的话,我想避免循环。
答案 0 :(得分:1)
使用[].forEach.call()
来迭代HTMLCollection
var user_input = document.getElementsByClassName('inp');
[].forEach.call(user_input, function(el) {
el.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode == 13) {
console.log(this.value); //this keyword in the handler function refers to element on which event is invoked!
}
});
});
<input type="text" class="inp">
<input type="text" class="inp">
<input type="text" class="inp">
答案 1 :(得分:1)
您可以将单个侦听器附加到父元素(在本例中为<body>
),并使用event.target属性来获取事件触发的DOM节点。
这是有效的,因为事件通过DOM层次结构冒泡。它被称为&#34;事件授权&#34;
请参阅以下链接:
示例代码:
HTML:
<div id="parent">
<input type="text" class="inp">
<input type="text" class="inp">
<input type="text" class="inp">
</div>
JavaScript的:
document.getElementById("parent").addEventListener("keyup", function (event) {
console.log(event.target.value)
}
答案 2 :(得分:1)
我无法在Jason Cemra上添加评论。
除了他/她的答案之外,PhoxKiD所要求的目标元素是“inp”类的输入。所以放置一个条件
function array_reject_value(array &$arrayToFilter, $deleteValue) {
$filteredArray = array();
foreach ($arrayToFilter as $key => $value) {
if ($value !== $deleteValue) {
$filteredArray[] = $value;
}
}
return $filteredArray;
}