js中事件绑定要注意的事项之如何在方法中自己打印自己的值
下面是错误的js方法绑定,这样写会造成在方法中不能用 调用方法的dom本身的一些 东西,如各种属性或者jq对象等。
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title></title>
</head>
<script type="text/javascript" src="js/jquery-1.8.0.js"></script> <body>
<!-- 下面是用纯动态方式生成标签 -->
<div id="d2">
动态生成a标签
</div> <div id="d3">
<input type="button" value="生成a标签" id="btn"/> </div>
</body>
<script>
///错误的写法: var i = 0;
$(function() {
///点击按钮,给d2动态添加标签
$('#btn').bind('click', function() {
/* 在添加标签的同时给添加的标签绑定点击事件 */
$("<li onclick='show()' num='"+(++i)+"'>Hello</li>").appendTo("#d2");
}); }) function show() {
alert($(this).text());///这样打印出的是空的,没有任何东西,但是方法是会触发的(不能这样打印自己)
alert($(this).attr("num"));///打印的是undefined 因为$(this)不能用
alert("哈哈");
$(this).remove();//方法无效,不能自己删除自己(页面没有效果)
}
</script> </html>
下面才是正确的写法:
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title></title>
</head>
<script type="text/javascript" src="js/jquery-1.8.0.js"></script> <body>
<!-- 下面是用纯动态方式生成标签 -->
<div id="d2">
动态生成a标签
</div> <div id="d3">
<input type="button" value="生成a标签" id="btn"/> </div>
</body>
<script>
///正确的写法 var i = 0;
$(function() {
///点击按钮,给d2动态添加标签
$('#btn').bind('click', function() {
/* 在添加标签的同时给添加的标签绑定点击事件 */
$("<li onclick='show(this)' num='"+(++i)+"'>Hello</li>").appendTo("#d2");
});
////注意:在标签中的绑定方法中加了个参数 this,代表js元素的dom对象本身【注意:只能用this】会传递到方法体中 }) /*在方法定义端,参数中随便加个变量即可,
如obj或者o或者a等任意变量符号都行,且其不用事先用var定义,可以直接用
然后在方法体中就可以用obj.value【原生的js对象的属性使用方法】或者$(obj).val()【jq的对象方法】等来操作dom本身了
*/
function show(obj) {
alert($(obj).text());///这样会政策打印出方法的text即这里的Hello
alert($(obj).attr("num"));///打印属性也没问题
alert("哈哈");
$(obj).remove();//自己删除自己也是好用的
}
</script> </html
<!--
正确的绑定方法和原来错误的方法只有一点小区别,即:
1.在html标签中,绑定方法的时候,方法中加上一个参数 this【只能是this,不能用其他变量】
2.在方法的定义位置,方法的参数中用任意一个变量来接收页面上传递过来的this(即调用当前方法的原生js的dom对象)
3.在方法体中就可以用2中定义的 变量.js原生属性 或者 $(变量).val()等jq封装后的方法来对调用者dom本身进行各种操作了。 当然,如果标签不是拼接时绑定的方法,而是后来动态绑定的,那么可以用live 方法达到同样的效果
【注意:只能用live方法给动态标签绑定事件,在事件中才可以操作标签本身,如果用bind方法是不能操作标签本身相关的】
eg:
///bind方法对于动态添加的标签不好使,其只对已经存在的静态标签好用 ///用live方法才好用,用live时,方法体中可以直接写 this和 $(this)
$('li').live('click', function() {
alert($(this).text());///注意,用live还可以这样写,结果是正常的
alert("haha");
$(this).remove();///用live方法,这都可以,自己删自己 好使.
}); -->
js中事件绑定要注意的事项之如何在方法中自己打印自己的值的更多相关文章
- JS中事件绑定的三种方式
以下是搜集的在JS中事件绑定的三种方式. 1. HTML onclick attribute <button type="button" id="upl ...
- JS基础——事件绑定
上一篇博客JS事件对象中,老师问JS事件处理和VB中的事件处理有什么联系?先来解决一下这个问题.举个VB.net中事件处理的样例(JS敲久了,VB习惯的都不熟悉了,看来得常常回想了): 1.事件处理V ...
- JavaScript 中事件绑定的三种方式
以下是在 JS 中事件绑定的三种方式. 1. HTML onclick attribute <button type="button" id="uplo ...
- jq中事件绑定的方法
在唯品会实习生面试中,被面试官问了这么一个问题,“jQuery中绑定事件的方法有几个?”,以click事件为例,我当时想到的只有.click(),.bind(),.on()这三种,然后面试官又追问,“ ...
- JS中事件绑定函数,事件捕获,事件冒泡
1 事件绑定:事件与函数绑定以及怎么取消绑定 1.1 元素.onclick这种形式,如下: <div id="div1">aaa</div> <scr ...
- JS中事件绑定问题
今天编写代码时遇到一个问题,我的判断语句(IFLESE)老是顺序执行结束后又跳到中间的语句里去执行了,找了半天没发现问题,最后才发现是事件绑定闹得鬼,不多说,先上代码为敬. JSP里 <butt ...
- JS的事件绑定、事件流模型
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.JS事件 (一)JS事件分类 1.鼠标事件:click/dbclick ...
- 深入理解JS的事件绑定、事件流模型
一.JS事件 (一)JS事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresi ...
- JavaScript中事件绑定的三种方式
JavaScript使得网页与用户友好交互,在使用 js 进行时间绑定的时候有三种绑定方式. 第一种:初学者以及普通写法 <div id="dom0"> <inp ...
随机推荐
- oracle ocp视频教程笔记
show parameter user user_dump_dest string /u01/app/oracle/diag/rdbms/orcl/orcl/trace oracle日志存放位置d ...
- Individual Project复审
复审代码的来源:12061162 王骜 王骜同学的代码注释较多,读起来还是比较容易懂. 代码遵从模块化思想,各个模块之间分工明确,功能重复少,模块之间联系紧密,相互调用明确. 处理单词过程运用了正则表 ...
- 12.16 Daily Scrum
Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表. 邓亚梅 美化搜索框UI. 美 ...
- HTTP基础与Android之(安卓与服务器通信)——使用HttpClient和HttpURLConnection
查看原文:http://blog.csdn.net/sinat_29912455/article/details/51122286 1客户端连接服务器实现内部的原理 GET方式和POST方式的差别 H ...
- android计算器
一:引言 目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了.手机上的软件也随 ...
- 第一个Sprint第一天
第一个Sprint冲刺的第一天 组员:陈建定 陈友沛 林清松 我们小组选的题目是小学四则运算APP 之前我们都没有做过这个程序,不过我们会尽力完成. 第一阶段的冲刺我们主要分析这个APP的所需的功能, ...
- python中的hasattr()、getattr()、setattr()
hasattr()的用法和理解--hasattr(obj, target) 判断对象obj中是否含有,目标target属性,然后返回布尔值,如果有返回True,没有返回False. >>& ...
- The MathType Dll cannot be found 问题解决办法
被这个问题困扰了许久,找到了解决办法,没想到最后居然是因为mathtype安装路径里的文件位置有问题(至少我是这么认为的).是这样的,在安装完mathtype6.9b后,发现打开word2013是正常 ...
- Jenkins Git Changelog Plugin
https://wiki.jenkins.io/display/JENKINS/Git+Changelog+Plugin
- zip 与 unzip的简单使用
先看help Copyright (c) - Info-ZIP - Type 'zip "-L"' for software license. Zip ). Usage: zip ...