jquery事件委托的回调函数中调用全局变量的简单方法
来源:互联网 发布:c语言判断时间间隔 编辑:程序博客网 时间:2024/06/06 02:26
问题:在用openlayers3开发GIS系统时,出现一个问题,代码片段如下:
//鼠标右键添加点击事件
$(map.getViewport()).on("contextmenu", function(event){
map.removeInteraction(draw);
var pixel = map.getEventPixel(event.originalEvent);//获取鼠标当前像素点
var hit = map.hasFeatureAtPixel(pixel); //通过像素点判断当前鼠标上是否有图形
var coordinate = map.getEventCoordinate(event);//获取鼠标坐标
console.log(coordinate);
event.preventDefault(); //取消右键默认行为
//if(hit){
$("#contextmenu_container ul").html("<li><a class='update_feature'>更改坐标</a></li>"+
"<li><a class='delete_feature'>删除要素</a></li>"+
"<li><a class='copy_feature'>复制要素</a></li>"+
"<li><a class='paste_feature'>粘贴要素</a></li>"+
"<li><a class='edit_feature'>编辑属性</a></li>");
menu_overlay.setPosition(coordinate);//在鼠标位置展示menu_overlay
//}else{
// menu_overlay.setPosition(undefined);//将menu_overlay隐藏
//}
// 删除要素
$("a.delete_feature").on("click",delete_feature);
//更改坐标
$("a.update_feature").on("click",update_feature);
//复制要素
$("a.copy_feature").on("click",copy_feature);
//粘贴要素
$("a.paste_feature").on("click",paste_feature);
//编辑要素的属性
$("a.edit_feature").on("click",edit_feature);
//select.getFeatures().clear();//鼠标右键之后取消要素的高亮选中效果
});
//右键为建筑物添加立面计算--此边
function vertical_edge(){
menu_overlay.setPosition(undefined);
if(select.getFeatures().getLength()>0){
console.log(coordinate); //显示结果为undefined
}
select.getFeatures().clear();
}
上述代码片段中$("a.this_edge").on("click",vertical_edge); //为此边添加建筑物立面计算,在回调函数中console.log(coordinate);的输出结果为undefined,因为这种写法回调函数中并不能调用全局变量,改正之后:
将上面事件委托代码换成$("a.this_edge").on("click",{coordinate:coordinate},vertical_edge);
回调函数内部处理:
function vertical_edge(event){
menu_overlay.setPosition(undefined);
if(select.getFeatures().getLength()>0){
console.log(event.data.coordinate);
}
select.getFeatures().clear();
}
这样的话就可以访问函数之外的全局变量了。。。
//鼠标右键添加点击事件
$(map.getViewport()).on("contextmenu", function(event){
map.removeInteraction(draw);
var pixel = map.getEventPixel(event.originalEvent);//获取鼠标当前像素点
var hit = map.hasFeatureAtPixel(pixel); //通过像素点判断当前鼠标上是否有图形
var coordinate = map.getEventCoordinate(event);//获取鼠标坐标
console.log(coordinate);
event.preventDefault(); //取消右键默认行为
//if(hit){
$("#contextmenu_container ul").html("<li><a class='update_feature'>更改坐标</a></li>"+
"<li><a class='delete_feature'>删除要素</a></li>"+
"<li><a class='copy_feature'>复制要素</a></li>"+
"<li><a class='paste_feature'>粘贴要素</a></li>"+
"<li><a class='edit_feature'>编辑属性</a></li>");
menu_overlay.setPosition(coordinate);//在鼠标位置展示menu_overlay
//}else{
// menu_overlay.setPosition(undefined);//将menu_overlay隐藏
//}
// 删除要素
$("a.delete_feature").on("click",delete_feature);
//更改坐标
$("a.update_feature").on("click",update_feature);
//复制要素
$("a.copy_feature").on("click",copy_feature);
//粘贴要素
$("a.paste_feature").on("click",paste_feature);
//编辑要素的属性
$("a.edit_feature").on("click",edit_feature);
//select.getFeatures().clear();//鼠标右键之后取消要素的高亮选中效果
});
//右键为建筑物添加立面计算--此边
function vertical_edge(){
menu_overlay.setPosition(undefined);
if(select.getFeatures().getLength()>0){
console.log(coordinate); //显示结果为undefined
}
select.getFeatures().clear();
}
上述代码片段中$("a.this_edge").on("click",vertical_edge); //为此边添加建筑物立面计算,在回调函数中console.log(coordinate);的输出结果为undefined,因为这种写法回调函数中并不能调用全局变量,改正之后:
将上面事件委托代码换成$("a.this_edge").on("click",{coordinate:coordinate},vertical_edge);
回调函数内部处理:
function vertical_edge(event){
menu_overlay.setPosition(undefined);
if(select.getFeatures().getLength()>0){
console.log(event.data.coordinate);
}
select.getFeatures().clear();
}
这样的话就可以访问函数之外的全局变量了。。。
阅读全文
0 0
- jquery事件委托的回调函数中调用全局变量的简单方法
- C#中委托、事件和回调函数的理解
- 回调函数中响应MFC ActiveX事件的方法
- 回调函数中响应MFC ActiveX事件的方法
- JQuery中ajax的回调函数内给全局变量赋值
- 异步委托调用和回调函数的结合使用
- 简单的jQuery回调函数
- #中调用委托的简单方法
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- MSDN中回调函数的讲解及其C#例子:用委托实现回调函数
- C#中的委托(为什么C#调用dll的回调函数用委托)
- 原生js事件委托与简单的jquery事件委托方法
- C#委托,事件与回调函数
- C#委托,事件与回调函数
- C#委托,事件与回调函数
- 入门 委托、事件和回调函数
- C#委托,事件与回调函数
- C# DataGridView添加右键菜单等技巧
- 数据结构几种常用排序算法总结
- linux下清除tomcat缓存
- C#String和StringBuilder的用法
- zookeeper kafka基本配置
- jquery事件委托的回调函数中调用全局变量的简单方法
- 模运算的世界--线性同余方程组
- 微服务架构的基础框架选择:Spring Cloud还是Dubbo?
- vs2015如何设置类或函数前不显示引用的数量
- 功能测试用例设计策略
- 读书01《知道做到》
- IAR编译出现“xxxxxxxx" declared implicity”
- eclipse常用快捷键
- 【美团点评】无人驾驶算法工程师 2017-09-03电话面试