在做1个简单功能的时候,行间事件这块发现了1个问题:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head><body>
<a οnclick="fn()">a标签</a>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script>function fn(obj){var t = $(this).text();console.log("t:"+t);}
</script>
</body>
</html>

  

打印不出来t。事实上,这样做获取不到元素,也就是说$(this)为空。很奇怪了,这种写法也经常见:

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <title>无标题文档</title>
 6 </head>
 7
 8 <body>
 9 <a>a标签</a>
10 <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
11 <script>
12 $('a').click(function(){
13     var t = $(this).text();
14     console.log(t);
15     alert(t);
16     })
17
18 </script>
19 </body>
20 </html>

事实上,这种写法就能获取的到。

那行间事件怎么传this呢?如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head><body>
<a onclick="fn(this)">a标签</a>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script>function fn(obj){var t = $(obj).text();console.log(t);alert(t);}
</script>
</body>
</html>

注意,函数的形参不能直接写this,因为this是一个关键字。$(obj)的作用是将原生的dom对象转换成jquery对象。这样可以很方便的进行操作了。

总结:第1种写法有问题,其他两种都可以。有时候事件写在行间方便点,因为动态语言生成页面的时候,传值很方便,除了this,我们还可以传后台的数据,jsp中比如:

<a οnclick="createChild(${map2.id},${map2.parentid},'${map2.url}','${map1.menuname}')" >(修改)</a>。

这时候要在JavaScript要用到this,那么这样即可:

1 <a  onclick="createChild(${map2.id},${map2.parentid},'${map2.url}','${map1.menuname}',this)" >(修改)</a>

不用this的时候把事件写在外面,本文中第二种写法。

转载于:https://www.cnblogs.com/xiaochongchong/p/5446323.html

行间事件传this的问题:相关推荐

  1. JS一起学02:函数传参、操作属性第二种方式、提取行间事件、循环、this、焦点问题、联动选择、选项卡焦点图

    一.函数传参     1.函数传参:参数就是占位符----函数里定不下来的东西 var a1=function(){ alert(123); }; function a(f){ // 相当于 f=a1 ...

  2. 【Ant Design Pro 四】react 点击事件传参

    简单的绑定点击事件传参: 点击事件 function myClick(){console.log('点击')}return (<Button onClick={myClick}>点击< ...

  3. javascript-行间样式,提取行间事件,while/for,全选/反选/取消,选项卡,innerHTML

    行为.样式.结构分离(JS/CSS/HTML) 1.不要加行间样式: 2.不要加行间事件 一.行间样式 <!DOCTYPE doctype html> <html lang=&quo ...

  4. vue 事件调用 传参_对vue下点击事件传参和不传参的区别详解

    如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...

  5. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  6. 【微信小程序】给绑定事件传参数

    前言 调试基础库 2.12.0 开发者工具 1.03.2008270 给绑定事件传参数 使用公共属性data-*给绑定事件传参数 使用方式 声明事件: Page({tapName: function( ...

  7. click传值vue_对vue下点击事件传参和不传参的区别详解

    如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...

  8. uni-app的事件传参

    uni-app的事件传参,和微信方式类似,需要先定义data-,再在函数中获取 <div @click="handleClick" data-big-dog='大狗子'> ...

  9. 微信小程序 事件传参

    微信小程序 事件传参 wxml部分 js 部分 wxml部分 1.先绑定事件 2.在该元素上写上属性 data-index 3.参数值即为要传参数 <text catchtap="de ...

最新文章

  1. memset函数详细说明
  2. python学习(一)-----数据结构和算法----序列和字典的基本用法
  3. linux fls函数,linux常用操作命令
  4. es6学习1: 模拟react Comopnent类的实现
  5. excel分类_Excel数据处理学习(七)使用分类汇总
  6. 【Win32汇编】测试Irvine32库
  7. 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
  8. 使用Windbg内核调试连接调试用户态程序的方法
  9. es6 嵌套数组循环_ES6 常用数组循环
  10. Struts2学习笔记(六) 结果(Result)(上)
  11. Django JWT认证实现
  12. [转载] 民兵葛二蛋——第10集
  13. vue+vue-cli2+webpack配置资源cdn
  14. 程序员编程艺术:第五章、寻找满足条件的两个或多个数
  15. Git 可视化工具 Fork 使用指南
  16. vue3.0教程——搭建Vue脚手架【简化版】
  17. ipv6的127位掩码如何表示_网络基础 | 浅谈IP地址与子网掩码
  18. 2022-2028年中国手机银行行业市场竞争态势及未来前景分析报告
  19. 蓝海卓越无线运营方案简述
  20. 《白鲤助手》抖音所有功能操作说明

热门文章

  1. Anciroid的IPC机制-Binder概述
  2. js tooltip之wz_tooltip使用方法和参数备忘
  3. Navicat15连接Oracal失败解决办法
  4. 一些在PHPStudy部署中出现的问题解决
  5. logistic regression及其Python实现
  6. Tensorflow源码编译
  7. vc对图像进行平移,转置等几何变换
  8. mui获取css参数,Mui-获取时间-调用手机api
  9. vscode更改配置文件路径_VsCode的jsconfig配置文件说明详解
  10. 坚果云android功能,坚果云发布Android新版本 离线收藏大增强