js绑定事件this指向发生改变的问题解决方法_javascript技巧

可对函数进行如下扩展

复制代码 代码如下:

Function.prototype.bind = function(obj) {
var _this = this;
return function() {
_this.apply(obj,arguments);
}
}

用法如下

复制代码 代码如下:

var a = function(){
alert(this.title)
}.bind(document);
a();

常用在这儿

复制代码 代码如下:

function myalert() {
this.title = 'hello world';
this.init = function() {
$("#xxx").click(this.close.bind(this));
}
this.close = function() {
alert(this.title)
}
}

复制代码 代码如下:

<P style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; MARGIN-TOP: 0px; FONT-FAMILY: 微软雅黑, 宋体, 'Trebuchet MS', Tahoma, Arial, sans-serif; MARGIN-BOTTOM: 10px; COLOR: rgb(34,34,34); FONT-SIZE: 14px; PADDING-TOP: 0px" class=p1>var a  = new myalert();</P><P style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; MARGIN-TOP: 0px; FONT-FAMILY: 微软雅黑, 宋体, 'Trebuchet MS', Tahoma, Arial, sans-serif; MARGIN-BOTTOM: 10px; COLOR: rgb(34,34,34); FONT-SIZE: 14px; PADDING-TOP: 0px" class=p1>a.init();</P>

时间: 2024-10-03 21:02:33

js绑定事件this指向发生改变的问题解决方法_javascript技巧的相关文章

JavaScript绑定事件监听函数的通用方法_javascript技巧

事件绑定的3中常用方法:传统绑定.W3C绑定方法.IE绑定方法.但是,在实际开发中对于我们来讲重要的是需要一个通用的.跨浏览器的绑定方法.如果我们在互联网上搜索一下会发现许多方法,以下是比较知名的几种方法: 在开始学期下面几种方法之前,应当讨论一下,一个好的addEvent()方法应当达到哪些要求: a.支持同一元素的同一事件句柄可以绑定多个监听函数: b.如果在同一元素的同一事件句柄上多次注册同一函数,那么第一次注册后的所有注册都被忽略: c.函数体内的this指向的应当是正在处理事件的节点(

js鼠标单击和双击事件冲突问题的快速解决方法_javascript技巧

情况一 如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox). 解决方法: <button onclick="test(1)" ondblclick="test(2)"></button> <scr

js捕捉键盘事件和按键键值的方法_javascript技巧

如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Co

JS中使用变量保存arguments对象的方法_javascript技巧

迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些值建立一个迭代器. 测试代码好下: var it=values(,,,,,,,,); it.next();// it.next();// it.next();// 分析:由于values函数需要接收任意多个参数,这里就需要用到上一节讲到的构建可变参数的函数的方法.然后里面的迭代器对象来遍历argum

js+css实现tab菜单切换效果的方法_javascript技巧

本文实例讲述了js+css实现tab菜单切换效果的方法.分享给大家供大家参考.具体实现方法如下: index.css如下: 复制代码 代码如下: * {      margin: 0px;      padding: 0px;  }  body {      width: 600px;      margin: 0 auto;      background-color: silver;  }    #contanier {      background-color: yellow;     

JS清除字符串中重复值的实现方法_javascript技巧

本文实例讲述了JS清除字符串中重复值的实现方法.分享给大家供大家参考,具体如下: /// <summary> /// 清除字符串中重复的值 /// </summary> /// <param name="Text">字符串</param> /// <param name="Label">标签(如:| ,)</param> function FilterRepeatStr(Text, Label)

js移动焦点到最后位置的简单方法_javascript技巧

当输入框(input/textarea)获得焦点时,将焦点移动到最后,在某些情况下用户体验很好.网上的大部分方法都是针对IE浏览器的. 代码如下: var el = document.getElementById('txtArticle'); var range = el.createTextRange(); range.moveStart('character', el.value.length); range.collapse(false); range.select(); 其实可以将mov

js实现文字在按钮上滚动的方法_javascript技巧

本文实例讲述了js实现文字在按钮上滚动的方法.分享给大家供大家参考.具体如下: 文字在按钮上滚动,以吸引人的注意,点击按钮后跳转到指定的网址,运行本演示代码后,在效果演示区可看到文字在按钮内的滚动效果.按钮的颜色和文字大小都可以重新定义. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/js-txt-scroll-button-style-codes/ 具体代码如下: <HTML> <HEAD> <TITLE>文字在按

JS弹出新窗口被拦截的解决方法_javascript技巧

在Web编程中,使用JS在新窗口打开页面的时候,会遇到被浏览器拦截的情况,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢? 一.问题一 一般情况下,如果直接在js中调用window.open()函数去打开一个新窗口,浏览器会对弹出的窗口进行拦截,因为浏览器会把该窗口认为是弹出广告等用户不想得到的窗体 1.解决方法 把window.open()函数改为由用户主动点击时触发,在超链接里加入onclick事件,这样浏览器就认为是用户想访问这个页面,而不是直接弹出给用户 2.例如: <a href=