关于从jquery过渡到javascript的问题

pikay 发布于 2013/09/18 12:24
阅读 373
收藏 1

以前一直用jquery,没有审图了解到function的多种用法和类的用法,简单会用就能上手jquery了;现在回头认真学javascript,发现搜了很久都没办法代替jq里面的触发事件的方法,比如

以前jquery,想让某个dom触发事件,要写


<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function al()
{
	alert("I'm aaaa");
}
$(document).ready(function() {
    $("#aaa").click(function (){
		al();
	})
});
</script>

<input type="button" value="aaaaaa" id="aaa">
这样就可以控制id为aaa的触发onclick事件了;


如果用js的话,就要


<script type="text/javascript">
function al()
{
	alert("I'm aaaa");
}
</script>


<input type="button" value="aaaaaa" id="aaa" onClick="al()">


所以,我想问,有没有用js的方法模拟jquery里的click事件一样,可以让触发事件的代码和前端代码分开?还有前提是不能用js在input上添加一个onclick的方法,也不能使用其他库,求解决方案,在线等

加载中
0
Mike_Liu
Mike_Liu

你可以先写个函数

function addEvent(elm, evType, fn) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, false);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

再通过这个进行事件的绑定

addEvent(document.getElementById('aaa'),'click',function(){
    al();
});
请在DOM ready之后再进行事件绑定哦~~

0
b
blue_sky001

先得到那个dom对象,然后注册事件,var dom = document.getElementById('aaa');

dom.onClick = function() {};

pikay
pikay
找到问题所在了,DOM没有载入完所以运行抛出错误,感谢你的回答
pikay
pikay
这个方法运行无效果
0
純白陰影
純白陰影
document.getElementById("aaa").onclick=function(){al()}; 可参考 www.w3school.com.cn/js/js_htmldom_events.asp
pikay
pikay
你的方法可行
純白陰影
純白陰影
你需要在onload事件中绑定dom元素事件,即window.onload = function(){/*这个函数体写上述绑定事件的代码*/}
pikay
pikay
这个方法试过,不行
0
guor
guor

有办法的,只不过用jquery的话,它内部做了很多兼容性处理,比如click事件,有以下三种写法:

首先是获取到dom元素,所有写法都一样

var obj = document.getElementById("aaa");

1. obj.onclick = method1;

这种写法有很大的一个问题,如果你在后面再写一句:obj.onclick = method2; 点击元素时将只会触发method2方法

2. obj.attachEvent("onclick",method1);

这种写法在FireFox浏览器下是无效的,FireFox浏览器要用第三种写法

3. obj.addEventListener("click", method1);

其他事件类似,一般都在w3cschool上可以查到的

pikay
pikay
感谢讲解
返回顶部
顶部