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 事件绑定才可以。。。。

浙公网安备 33010602011771号