js事件
<!DOCTYPE> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>如何获取事件触发源(兼容IE和FireFox)</title> <script src="jquery-1.4.4.js" type="text/javascript"></script> <script type="text/javascript"> function ClickMe(e) { var src = e.target || window.event.srcElement; alert(src.value); alert(src.innerHTML); } function ClickMe2() { var e = arguments[0] || window.event; var src = e.srcElement || e.target; // src 就是事件的触发源 alert(src.value); } function test(event) { var e = event || window.event; if (e.keyCode == 13) { alert("捕捉住回车提交事件!"); } } </script> </head> <body> <button onclick="ClickMe(event)"> 测试</button> <input type="text" name="t" onkeydown="test(event);"/> <button onclick="ClickMe2(event)">测试2</button><br /> <textarea rows="20" cols="50"> document.onclick = onClick; function onClick(ev) { ev = ev || window.event; // 事件 var target = ev.target || ev.srcElement; // 获得事件源 /* target.getAttribute()是获取该事件源对像里面的一些属性。 比如对像中有(name,id,type等等); */ var dragObj = target.getAttribute('type'); alert(dragObj); } </textarea> </body> </html>
这段代码在ie浏览器下 在文本框按下回车键 会触发button的事件(即事件冒泡)但是实际上他确实要写上阻止默认行为。难道默认行为也是事件冒泡或者说默认行为是事件冒泡的一种?而这里直接写return flase 都无效.不明白为什么?邪恶的ie
代码:
js 阻止默认行为
if (e && e.preventDefault) e.preventDefault(); //IE中阻止函数器默认动作的方式 else window.event.returnValue = false; return false;
阻止事件冒泡:
//如果提供了事件对象,则这是一个非IE浏览器 if (e && e.stopPropagation) //因此它支持W3C的stopPropagation()方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true;
jq:stopPropagation,preventDefault;
结果在ie下e.stopPropagation();提示没有这个方法或者属性!难道jq的e事件对象信息
function test(e) { e.stopPropagation(); }在html
<input type="text" name="t" onkeydown="test(e);"/>这样写无效!一定要$("xxx").click(function(e){.....}); 或者用bind 事件绑定才可以。。。。