js方法有参数的时候,怎么定义event

secret1994 2014-08-10 07:04:51
我要用阻止冒泡。以前是function xx(e),但是当这个方法有传参的时候,e该怎么写?
...全文
910 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
secret1994 2014-08-15
  • 打赏
  • 举报
回复
引用 14 楼 yukon12345 的回复:
上边“数据1”的引号写成中文的了。
已经知道了,
secret1994 2014-08-15
  • 打赏
  • 举报
回复
引用 14 楼 yukon12345 的回复:
上边“数据1”的引号写成中文的了。
不好意思.前几天有事没看,刚刚试了下.怎么判断是不是点击的子元素?
secret1994 2014-08-11
  • 打赏
  • 举报
回复
引用 5 楼 yukon12345 的回复:
另外我还是推荐用父容器bind事件啦,一来版本兼容,二来比动态绑定效率高
这样创建新的时候,也是要绑定一次点击事件把?我就是不想绑定一次,不用bind什么的。才想直接用onclick的。
步慢生错 2014-08-11
  • 打赏
  • 举报
回复
另外我还是推荐用父容器bind事件啦,一来版本兼容,二来比动态绑定效率高
步慢生错 2014-08-11
  • 打赏
  • 举报
回复
引用 3 楼 secret1994 的回复:
我搜了下,说可以用return false,但我用了没反应。不想用jquery,因为用到的元素可以添加, 用了jquery就每加一次就要绑定一次事件,想直接用js的onclick="add(this)"
你太OUT了吧,用的难道是08年的jquery么 别人1.3以后用live,1.9以后用on都可以动态绑定 就算是1.3以前,bind父容器后用冒泡检查一样可以动态绑定。还用每个元素onclick?
步慢生错 2014-08-11
  • 打赏
  • 举报
回复
上边“数据1”的引号写成中文的了。
步慢生错 2014-08-11
  • 打赏
  • 举报
回复
引用 8 楼 secret1994 的回复:
[quote=引用 7 楼 yukon12345 的回复:] [quote=引用 6 楼 secret1994 的回复:] [quote=引用 5 楼 yukon12345 的回复:] 另外我还是推荐用父容器bind事件啦,一来版本兼容,二来比动态绑定效率高
动态绑定的意思就是写一次绑定,不管你生成多少都自动绑定上这个函数。你觉得jquery不好只是你不了解jquery 而且bind方法的第二个参数可以传任意多的数据给处理函数[/quote] 我没觉得jquery不好。只是这里创建元素的时候不想再绑定,用onclick就不需要每次都绑定。而由于我写的是一个弹出框,点击document会让弹出框隐藏,但点自己或者点显示的按钮不隐藏,所以需要阻止冒泡,但当函数有传参时,阻止冒泡里的事件该怎么写。[/quote] 你这需求需要阻止冒泡?document绑定click函数,判断target的classs是不是弹出层class不就是了?
$(document).bind("click",{“数据1”:“数据值1”},closeDiv)
function closeDiv(e){
$_clicked=$(e.target)
if(!$_clicked.hasClass(弹出层div的class或者其他什么class))
弹出层close
alert(e.target.data.数据1)
}
猿敲月下码 2014-08-11
  • 打赏
  • 举报
回复
11L的有问题,可以直接把e加载参数里面,如同一楼的一样
猿敲月下码 2014-08-11
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="javascript" type="text/javascript">
// 工具类
var EventUtil = {
	/**
	 * 添加事件
	 * @param oTarget: DOM对象
	 * @param sEventType:事件类型
	 * @param fn:函数名
	 */
	addEvent : function(oTarget,sEventType,fn){
		if(oTarget.addEventListener){
			this.addEvent = function(oTarget,sEventType,fn) {
				oTarget.addEventListener(sEventType,fn,false);
			}
		}else if(oTarget.attachEvent){
			this.addEvent = function(oTarget,sEventType,fn) {
				oTarget.attachEvent("on" + sEventType,fn);
			}
		}else{
			this.addEvent = function(oTarget,sEventType,fn) {
				oTarget["on" + sEventType] = fn;
			}
		}
		// 调用新函数
		this.addEvent(oTarget,sEventType,fn);
	}

	/**
	 * 移除事件
	 * @param oTarget: DOM对象
	 * @param sEventType:事件类型
	 * @param fn:函数名,如果DOM对象上有多个click事件的话,可以指定移除哪一个函数
	 */
	,removeEvent : function(oTarget,sEventType,fn){
		if(oTarget.removeEventListener){
			this.removeEvent = function(oTarget,sEventType,fn) {
				oTarget.removeEventListener(sEventType,fn,false);
			}
		}else if(oTarget.detachEvent){
			this.removeEvent = function(oTarget,sEventType,fn) {
				oTarget.detachEvent("on"+sEventType,fn);
			}
		}else {
			this.removeEvent = function(oTarget,sEventType,fn) {
				oTarget["on"+sEventType] = null;
			}
		}
		
		this.removeEvent(oTarget,sEventType,fn);
	}
	/**
	 * 格式化事件对象,做到IE与DOM的统一
	 * @param oEvent:事件对象
	 */
	,formatEvent : function(oEvent){
		if(!+[1,]){ // IE
			oEvent.charCode = (oEvent.type == "keypress")?oEvent.charCode:0;
			oEvent.eventPhase = 2;
			oEvent.isChar = (oEvent.charCode > 0);
			oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
			oEvent.pageY = oEvent.clientY + document.body.scrollTop;
			// 阻止某个事件的默认行为
			oEvent.preventDefault = function(){
				this.returnValue = false;
			}
			
			if(oEvent.type == "mouseout"){
				oEvent.relateTarget = oEvent.toElement;
			} else if(oEvent.type == "mouseover"){
				oEvent.relateTarget = oEvent.fromElement;
			}
			
			// 阻止冒泡
			oEvent.stopPropagation = function(){
				this.cancelBubble = true;
			}
			
			oEvent.target = oEvent.srcElement;
			oEvent.timestamp = (new Date()).getTime();
		}
		return oEvent;
	}
	/**
	 * 格式化事件对象
	 */
	,getEvent : function(){
		if(window.event){
			return this.formatEvent(window.event);
		}else {
			return this.getEvent.caller.arguments[0];
		}
	}	
};


function ff(str,num) {
	var e = EventUtil.getEvent();
	alert(str + num)
	// 阻止冒泡,可以把这句注释掉看效果
	e.stopPropagation();
}

</script>
</head>

<body>  

<div onclick="alert(1)">
<button id="btnShow" onclick="ff('abc',123);">button</button>
</div>
</body>
</html>
这个工具类,参考下
anboxer 2014-08-11
  • 打赏
  • 举报
回复
事件的绑定没有自定义的参数。接口是固定的

var str="tetst";
jQuery('body').on('click', function(){
console.log(str);
})
只能通过这种方式取其它的值
secret1994 2014-08-11
  • 打赏
  • 举报
回复
我说的事件是没参数的时候,function(e)的e就行了。有参数又该怎么写?
secret1994 2014-08-11
  • 打赏
  • 举报
回复
引用 7 楼 yukon12345 的回复:
[quote=引用 6 楼 secret1994 的回复:] [quote=引用 5 楼 yukon12345 的回复:] 另外我还是推荐用父容器bind事件啦,一来版本兼容,二来比动态绑定效率高
动态绑定的意思就是写一次绑定,不管你生成多少都自动绑定上这个函数。你觉得jquery不好只是你不了解jquery 而且bind方法的第二个参数可以传任意多的数据给处理函数[/quote] 我没觉得jquery不好。只是这里创建元素的时候不想再绑定,用onclick就不需要每次都绑定。而由于我写的是一个弹出框,点击document会让弹出框隐藏,但点自己或者点显示的按钮不隐藏,所以需要阻止冒泡,但当函数有传参时,阻止冒泡里的事件该怎么写。
步慢生错 2014-08-11
  • 打赏
  • 举报
回复
引用 6 楼 secret1994 的回复:
[quote=引用 5 楼 yukon12345 的回复:] 另外我还是推荐用父容器bind事件啦,一来版本兼容,二来比动态绑定效率高
动态绑定的意思就是写一次绑定,不管你生成多少都自动绑定上这个函数。你觉得jquery不好只是你不了解jquery 而且bind方法的第二个参数可以传任意多的数据给处理函数
secret1994 2014-08-10
  • 打赏
  • 举报
回复
我搜了下,说可以用return false,但我用了没反应。不想用jquery,因为用到的元素可以添加, 用了jquery就每加一次就要绑定一次事件,想直接用js的onclick="add(this)"
secret1994 2014-08-10
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function x(e,str){
	var a=e||window.event;
	if(a.stopPropagation){
		a.stopPropagation();
	}else{
		a.cancelBubble=true;
	}
	alert(str);
}
window.onload=function(){
	document.getElementById('createtable').onclick=function(){
		alert('a');
	}
	document.getElementById('span').onclick=function(e){
		x(e,'mm');
	}
}
</script>
</head>

<body>
<div id="createtable">12<span id="span">34</span></div>
</body>
</html>
就是把e写在参数前面?
似梦飞花 2014-08-10
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function x(e,str){
	var a=e||window.event;
	if(a.stopPropagation){
		a.stopPropagation();
	}else{
		a.cancelBubble=true;
	}
	alert(str);
}
window.onload=function(){
	document.getElementById('createtable').onclick=function(){
		alert('a');
	}
	document.getElementById('span').onclick=function(e){
		x(e,'mm');
	}
}
</script>
</head>

<body>
<div id="createtable">12<span id="span">34</span></div>
</body>
</html>

87,917

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧