解决方案 »
- javascript原型问题
- 选中select的时候,如何不改变其值?
- IE模式窗口(window.showmodaldialog)如何进行Copy操作?
- showModalDialog弹出的画面如何去掉水平滚动条
- 请高手进来看看,先谢谢了!
- 问大家一个少见的问题。解决者独得100分
- 为什么我用history.go(-1)和history.back()没有反应,无法返回前一个页面?
- 请问怎样控制页面窗口大小
- <script>里面有退出或是return吗?可以这么用吗?
- 设置p的text的一个问题,求指教:-)
- [新人]鼠标移到img上,显示div,离开img时div隐藏,如果离开img但是还在显现的div上则不隐藏,现在问题是显现出来的div会撑开整个容器。
- jQuery插件Lazyload的占位图片
<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>
别人1.3以后用live,1.9以后用on都可以动态绑定
就算是1.3以前,bind父容器后用冒泡检查一样可以动态绑定。还用每个元素onclick?
而且bind方法的第二个参数可以传任意多的数据给处理函数
而且bind方法的第二个参数可以传任意多的数据给处理函数 我没觉得jquery不好。只是这里创建元素的时候不想再绑定,用onclick就不需要每次都绑定。而由于我写的是一个弹出框,点击document会让弹出框隐藏,但点自己或者点显示的按钮不隐藏,所以需要阻止冒泡,但当函数有传参时,阻止冒泡里的事件该怎么写。
jQuery('body').on('click', function(){
console.log(str);
})只能通过这种方式取其它的值
<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>
这个工具类,参考下
而且bind方法的第二个参数可以传任意多的数据给处理函数 我没觉得jquery不好。只是这里创建元素的时候不想再绑定,用onclick就不需要每次都绑定。而由于我写的是一个弹出框,点击document会让弹出框隐藏,但点自己或者点显示的按钮不隐藏,所以需要阻止冒泡,但当函数有传参时,阻止冒泡里的事件该怎么写。
你这需求需要阻止冒泡?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)
}