获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件
来源:互联网 发布:mac 显示.ds store 编辑:程序博客网 时间:2024/04/29 21:04
1.获取滑动条位置,动态调整对话框显示位置
应用场景:页面上有三个按钮,所处位置高度不同,有的按钮需要移动滑动条才能看到,各个按钮点击后要弹出同一个对话框,为了保证对话框始终显示在当前视野的中央位置,需要先获取滑动条位置,再设置对话框弹出位置,然后再显示对话框。
代码如下:
//点击上传文件按钮,打开上传文件对话框function onClickBtn(inputElementId){ document.getElementById("inputElementId").value = inputElementId; //根据input元素ID确定对话框中的文字提示 var str = ""; if(inputElementId == "type1"){ str = "btn_tip1"; }else if(inputElementId == "type2"){ str = "btn_tip2"; }else if(inputElementId == "type3"){ str = "btn_tip3"; }else{ str = "btn_tip"; } //根据点击的按钮的不同 对话框做不同的提示 $("#dialogTipInfo").html(str); var scrollXYArr = getPageScroll(); var scrollX = scrollXYArr[0]; var scrollY = scrollXYArr[1]; var windowSize = getWindowSize(); var windowSizeX = windowSize.w; var windowSizeY = windowSize.h; var left = scrollX + windowSizeX*0.4 + 'px'; var top = scrollY + windowSizeY*0.3 + 'px'; //根据当前滚动条的位置和窗口大小动态设置对话框的位置 document.getElementById("dlgBody").style.left = left; document.getElementById("dlgBody").style.top = top; //alert("left: " + left + "; top: " + top); //清空之前文件输入 document.getElementById("attachment").value = ""; $("#dlg").css("display","");} //获取滚动条的位置function getPageScroll() { var xScroll, yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; xScroll = self.pageXOffset; } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict yScroll = document.documentElement.scrollTop; xScroll = document.documentElement.scrollLeft; } else if (document.body) { // all other Explorers yScroll = document.body.scrollTop; xScroll = document.body.scrollLeft; } var arrayPageScroll = new Array(xScroll, yScroll); return arrayPageScroll;}//取当前浏览器width heightfunction getWindowSize(){ var w = 0; var h = 0; if(document.documentElement && document.documentElement.clientHeight) { w = document.documentElement.clientWidth; h = document.documentElement.clientHeight; } else if (document.body && document.body.clientHeight) { w = document.body.clientWidth; h = document.body.clientHeight; } else if(window.innerHeight) { w = window.innerWidth; h = window.innerHeight; } return { w: w, h: h };}
2.通过js动态添加的button,不能直接在添加button语句后,直接定义click事件,必须按照下面语句添加click响应事件
//不能在追加元素后 绑定$(document).on('click','.myBtnCls',function(){ var eleId = this.parentNode.children[0].id; onClickBtn(eleId);});
对于以下两种绑定click事件的方式:
$(document).on('click','.classname',function(){});$('.classname').on('click',function(){});
区别为: $(document).on
是把事件委托到document上,$('className').on
是把事件绑定到.className元素上。效率方面,直接绑定在元素上会更为高效,绑定在document上,每次document有点击动作,浏览器都会判断当前点击的对象,如果匹配,再决定要不要执行,多了一个判断的环节。但在目前开发中,JS渲染效率很高,所以此异同基本可以忽略不计。
此外,针对$(document).on
的触发特点,延伸一下,$("className").on
为onclick绑定,只有在页面onload的时候执行一次,当页面重画(比如js动态添加的一些元素)后,新加载的具有className的元素便没有事件绑定到上面了,相反$(document).on这种方法会刷新和重新赋予绑定操作,所以一定程度上更为全面。
这就对标题二提出的解决方案给出了完美的解释。
0 0
- 获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件
- flex动态添加button并添加click事件
- 自定义ViewGroup动态显示添加view的位置
- 动态调整对话框控件位置和大小
- 用Tag区分Click事件(为动态生成的页面添加onClick事件)
- 动态添加的Button不显示字体
- 动态添加DataTemplate且为模板中的button控件添加Click Event
- C# 动态生成的label添加click事件
- 关于动态添加的元素不能触发click事件
- android 获取控件屏幕位置 动态添加 视图
- JavaScript动态的为元素添加事件
- JAVASCRIPT动态的为元素添加事件
- JavaScript动态的为元素添加事件
- jquery为动态的节点添加事件
- 自定义RadioGroup动态添加RadioButton,并获取选中radioButton的位置
- JS为button赋click事件并动态传值
- 动态添加控件并设置控件位置
- Android动态添加控件约束位置
- iOS 面试题(3):解释垃圾回收的原理
- 一个初级运维工程师对于运维工作的一些浅显认知
- STL容器-map用法总结
- 性能优化
- 张高兴的 UWP 开发笔记:用 Thumb 控件仿制一个可拖动 Button
- 获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件
- Zigbee基本概念
- GetMessage第二个参数常见错误的解释
- zb的生日
- [多项式开根 模板题] BZOJ 3625 [Codeforces Round #250]小朋友和二叉树
- 谈谈Android机型适配
- winform为什么我在Debug模式下生成就可以,在Release模式下生成就报错
- 两种方式给UIImage添加六边形边框
- Tree Traversals (25)