所以也许我只是找不到合适的地方,但我找不到如何做相当于jQuery的好的解释
$('a').click(function(){
// code here
});
在普通的JavaScript中?
基本上我想在每次点击a
标签时运行一个函数但是我没有能力将jQuery加载到页面中以上面的方式执行它所以我需要知道怎么做它使用纯JavaScript。
答案 0 :(得分:55)
工作示例:http://jsfiddle.net/6ZNws/
HTML
<a href="something">CLick Here</a>
<a href="something">CLick Here</a>
<a href="something">CLick Here</a>
使用Javascript:
var anchors = document.getElementsByTagName('a');
for(var z = 0; z < anchors.length; z++) {
var elem = anchors[z];
elem.onclick = function() {
alert("hello");
return false;
};
}
答案 1 :(得分:44)
element.addEventListener('click', function() { ... }, false);
你必须找到元素并制作一个循环来连接每个元素。
答案 2 :(得分:13)
尝试以下
var clickHandler = function() {
// Your click handler
};
var anchors = document.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++) {
var current = anchors[i];
current.addEventListener('click', clickHandler, false);
}
注意:由于Ӫ_._Ӫ指出这不适用于IE8及更低版本,因为它不支持addEventListener
。
在IE8上,您可以使用以下内容订阅onclick
。它不是一个完美的替代品,因为它需要每个人合作,但它可以帮助你
var subscribeToOnClick = function(element) {
if (element.onclick === undefined) {
element.onclick = clickHandler;
} else {
var saved = element.onclick;
element.onclick = function() {
saved.apply(this, arguments);
clickHandler.apply(this, arguments);
}
}
}
for (var i = 0; i < anchors.length; i++) {
var current = anchors[i];
subscribeToOnClick(current);
}
答案 3 :(得分:10)
document.getElementById('elementID').onclick = function(){
//click me function!
}
答案 4 :(得分:7)
你走了:
[].forEach.call( document.querySelectorAll( 'a' ), function ( a ) {
a.addEventListener( 'click', function () {
// code here
}, false );
});
现场演示: http://jsfiddle.net/8Lvzc/3/
(在IE8中不起作用)
另外,我建议事件委托...
答案 5 :(得分:1)
这会为每个onclick
元素分配一个a
函数。
var links = document.getElementsByTagName("a");
var linkClick = function() {
//code here
};
for(var i = 0; i < links.length; i++){
links[i].onclick = linkClick;
}
您可以在行动here中看到它。
答案 6 :(得分:1)
我偶然发现了这个老问题。
对于新浏览器(在此处找到支持:https://caniuse.com/?search=querySelectorAll)
我的解决方法是:
function clickFunction(event) {
// code here
}
for (let elm of document.querySelectorAll("a")) {
elm.onclick = clickFunction;
}
经过优化,不会为每个元素创建新功能。
将在IE9及更高版本上工作。