[英]pure javascript equivalent of jquery click()?
我正在构建一个捕获鼠标点击的小应用程序。 我在jquery中编写了原型,但由于它是一个专注于速度的小应用程序,嵌入jquery只使用一个函数将是一个过度杀伤力。
我试图从JavascriptKit改编这个例子:
document.getElementById("alphanumeric").onkeypress=function(e){
//blah..blah..blah..
}
但是当我尝试时它没有用
document.getElementsByTagName("x").onclick
我究竟做错了什么?
假设您有一个p标签列表,您希望捕获p标签的点击:
var p = document.getElementsByTagName("p");
for(var i=0; i<p.length; i++){
p[i].onclick = function(){
alert("p is clicked and the id is " + this.id);
}
}
请查看此处的示例以获得更清晰: http : //jsbin.com/onaci/
在您的示例中,您使用的是getElementsByTagName,它返回一个DOM元素数组,您可以迭代该数组并为每个元素分配onclick处理程序,例如:
var clickHandler = function(){
alert('clicked!');
}
var elements = document.getElementsByTagName('div'); // All divs
for(var i = 0; i<elements.length; i++){
elements[i].onclick = clickHandler;
}
它看起来有点像你想念的不仅仅是jQuery的click功能。 您还会错过jquery的选择器引擎,链接以及跨对象集合的自动迭代。 通过更多的努力,您可以最低限度地再现其中的一些东西。
var myClickCapture = function (selector) {
var method, name,iterator;
if(selector.substr(0,1) === "#") {
method = "getElementById";
name = selector.substr(1);
iterator = function(fn) { fn(document[method](name)); };
} else {
method = "getElementsByTagName";
name = selector;
iterator = function(fn) {
var i,c = document[method](name);
for(i=0;i<c.length;i++){
fn(c[i]);
};
};
myClickCapture.click = function (fn){
iterator(function(e){
e.onclick=fn;
})
}
return myClickCapture;
}
我没有测试过代码,但从理论上讲,它会让你得到这样的东西:
myClickCapture("x").click(function(e){ alert("element clicked") });
希望这能让你了解jquery在幕后所做的各种事情。
document.getElementsByTagName("x")
返回标记名为“x”的元素数组。
您必须为返回数组中的每个元素设置right事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.