访问的JavaScript原生“这个” jQuery的
问题描述:
内部如何访问到this.today
的Moved
函数内?它将通过jQuery
称为所以this
关键字将的jQuery被覆盖到jQuery对象或DOM元素。访问的JavaScript原生“这个” jQuery的
下面是类似的东西我有什么:
(function(Map) {
Map.Timeline = {
today: null,
Init: function() {
jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved
},
Moved: function (event) {
console.log(this); // jQuery Object or DOM element
console.log(this.today); // fails
console.log(Map.Timeline.today); // works fine
},
// more code here ...
答
使用jQuery.proxy()在回调调用中使用自定义的背景下
jQuery('#timeline').mousemove(jQuery.proxy(Map.Timeline.Moved, this));
+0
完美!谢谢! :) – Mahdi 2013-04-21 10:14:40
+1
1上,其中使用该担心'proxy'最后一个很好的例子;) – 2013-04-21 10:15:12
答
你可以存储这个被覆盖前:
(function(Map) {
var myvar = $(this);
Map.Timeline = {
today: null,
Init: function() {
jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved
},
Moved: function (event) {
console.log(myvar); // jQuery Object or DOM element
console.log(myvar.today); // fails
console.log(Map.Timeline.today); // works fine
},
// more code here ...
你的意思是'这个= Map.Timeline' – jacktheripper 2013-04-21 10:08:40
@jacktheripper是的,你手动的意思是我重写它? – Mahdi 2013-04-21 10:09:32