所以也许我只是没有找对了地方,但我找不到怎么做的jQuery的的jQuery的香草JavaScript版本。点击
$('a').click(function(){
// code here
});
等同于普通的旧JavaScript的一个很好的解释?
基本上我想运行一个函数,每次点击一个a
标签,但我没有能力加载jQuery到页面上面的方式做到这一点,所以我需要知道如何使用普通JavaScript的。
所以也许我只是没有找对了地方,但我找不到怎么做的jQuery的的jQuery的香草JavaScript版本。点击
$('a').click(function(){
// code here
});
等同于普通的旧JavaScript的一个很好的解释?
基本上我想运行一个函数,每次点击一个a
标签,但我没有能力加载jQuery到页面上面的方式做到这一点,所以我需要知道如何使用普通JavaScript的。
工作实例: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;
};
}
在这里你去:
[].forEach.call(document.querySelectorAll('a'), function (a) {
a.addEventListener('click', function() {
// code here
}, false);
});
现场演示:http://jsfiddle.net/8Lvzc/3/
(不IE8工作)
另外,我建议事件委派...
element.addEventListener('click', function() { ... }, false);
你必须找到元素和d做一个循环来连接每一个。
document.getElementById('elementID').onclick = function(){
//click me function!
}
啊......应该指出,我不会知道'a'标签或标识,所以只需要说“对于任何标签点击.....” –
这将为每个a
元素分配一个onclick
函数。
var links = document.getElementsByTagName("a");
var linkClick = function() {
//code here
};
for(var i = 0; i < links.length; i++){
links[i].onclick = linkClick;
}
你可以在行动here看到它。
请尝试以下
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);
}
不要在循环内创建函数。最好在循环外部创建函数,并引用循环内部的函数。 –
@PeterOlson主要是我试图复制原始问题的风格。我会更新它在这个意义上更正确 – JaredPar
应该注意的是,IE8和更低版本不支持'addEventListener'。 – user113716
+1我建议你用';'结束函数*表达式*。 – pimvdb
哎呀好抓。 –
我不同意。恕我直言,你可能会破坏以前的界限功能。我认为使用“addEventListener”要好得多。 –