jQuery的普通JavaScript版本。单击
所以,也许我只是找不到合适的地方,但我找不到一个很好的解释,说明如何做jQuery的等价物jQuery的普通JavaScript版本。单击,javascript,jquery,function,event-handling,Javascript,Jquery,Function,Event Handling,所以,也许我只是找不到合适的地方,但我找不到一个很好的解释,说明如何做jQuery的等价物 $('a').click(function(){ // code here }); 用普通的老JavaScript 基本上,我想在每次单击标记时运行一个函数,但我没有能力将jQuery加载到页面中,以上面的方式进行操作,因此我需要知道如何使用纯JavaScript进行操作。给你: [].forEach.call( document.querySelectorAll( 'a' ), functio
$('a').click(function(){
// code here
});
用普通的老JavaScript
基本上,我想在每次单击标记时运行一个函数,但我没有能力将jQuery加载到页面中,以上面的方式进行操作,因此我需要知道如何使用纯JavaScript进行操作。给你:
[].forEach.call( document.querySelectorAll( 'a' ), function ( a ) {
a.addEventListener( 'click', function () {
// code here
}, false );
});
现场演示:
(在IE8中不起作用)
另外,我推荐活动代表团
element.addEventListener('click', function() { ... }, false);
您必须找到元素并创建一个循环来连接每个元素。这将为每个a
元素分配一个onclick
函数
document.getElementById('elementID').onclick = function(){
//click me function!
}
var links = document.getElementsByTagName("a");
var linkClick = function() {
//code here
};
for(var i = 0; i < links.length; i++){
links[i].onclick = linkClick;
}
var links=document.getElementsByTagName(“a”);
var linkClick=函数(){
//代码在这里
};
对于(变量i=0;i
您可以看到它正在运行。请尝试以下操作
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);
}
工作示例:
Html
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;
};
}
var-anchors=document.getElementsByTagName('a');
对于(var z=0;z
我刚刚偶然发现了这个老问题
对于新浏览器(请在此处找到支持:)
我的解决办法是:
function clickFunction(event) {
// code here
}
for (let elm of document.querySelectorAll("a")) {
elm.onclick = clickFunction;
}
这已优化为不为每个元素创建新函数
将适用于IE9及以上版本。您是否有理由不使用[].forEach.call(…)
?@pimvdb那么,call
是不合适的,因为必须将函数传递到forEach
。必须使用apply
,因此:[].forEach.apply(…,[function(){}])代码>。[function(){}]
符号对我来说有点奇怪……不要在循环中创建函数。最好在循环外创建函数,并引用循环内的函数。@PeterOlson我主要是想复制原始问题的风格。我将更新它,使其在这个意义上更加正确。可能需要注意的是,IE8和更低版本不支持addEventListener
@u1258;。IE8的替代方案是什么?嗯,没有确切的替代方案。它们确实有attachEvent
,但是它不接受第三个参数来设置冒泡/捕获(冒泡是默认的),并且它没有将这个设置为调用处理程序的元素,但是使用闭包可以解决这个问题。啊。。。应该指出的是,我事先不知道“a”标签或ID,所以只需要说“对于点击的任何a标签…”我不同意。IMHO您可以销毁上一个绑定函数。我认为使用“addEventListener”要好得多。它更容易阅读,但并没有以任何方式进行优化。您仍然可以有效地在元素数组中循环。你是对的!我读了一些书,分心了。更圆滑的解决方案是使用for of循环。(编辑了我的解决方案),这很酷,但我注意到它将覆盖任何现有的onclick处理程序
var anchors = document.getElementsByTagName('a');
for(var z = 0; z < anchors.length; z++) {
var elem = anchors[z];
elem.onclick = function() {
alert("hello");
return false;
};
}
function clickFunction(event) {
// code here
}
for (let elm of document.querySelectorAll("a")) {
elm.onclick = clickFunction;
}