检索正确的“;这个“;在javascript中
retrieving the correct "this" in javascript
我已经构建了自己的对象:
Main.utilities.pool = function (pool) {
var counter=0;
var $form = $(pool);
return {
add_pool_field: function(){
$form.find('#practice_type').change(function() {
if($(this).find("option:selected").val()){
var time = new Date().getTime();
var regexp = new RegExp( $(this).find("option:selected").data('id'), 'g');
$("#items").append('<li class="colorize">' + '<h1>' + this.increment_counter() + '</h1>' + $(this).find("option:selected").data('fields').replace(regexp, time) + '</li>');
}
});
},
increment_counter: function(){
return ++counter;
},
init: function() {
this.add_pool_field();
}
}
}
我这样称呼它:
var $profile_pool = Main.utilities.pool($('#new_form')).init();
问题出在更改事件中,这指的是一个选择字段。但是,我想访问从pool函数返回的实际任意对象的increment_counter函数。当我尝试this.increment_counter()时,它认为这是html选择字段,所以它爆炸了。如何在传递给更改的函数的上下文中访问该对象?
只需在add_pool_field()
的本地作用域中保存对this
的引用。
add_pool_field: function(){
var self = this;
$form.find('#practice_type').change(function() {
if($(this).find("option:selected").val()){
var time = new Date().getTime();
var regexp = new RegExp( $(this).find("option:selected").data('id'), 'g');
$("#items").append('<li class="colorize">' + '<h1>' + self.increment_counter() + '</h1>' + $(this).find("option:selected").data('fields').replace(regexp, time) + '</li>');
}
});
},
您需要保留对所需this
的引用,通过其他变量-将其声明为变量
var t = this;
然后在change函数中,使用t
访问对象的this
。
相关文章:
- 如何调用这个匿名 JavaScript 函数
- 使用“;这个“;JavaScript原型方法中的关键字
- 如何向这个javascript/jquery函数添加参数
- 为什么我在这个javaScript代码中使用NaN
- 你能解释一下为什么这个javascript不正确吗
- 在这个幻灯片中没有淡出效果JavaScript,CSS和HTML
- Javascript 这个关键字在原型函数中的递归执行一次,然后未定义
- JavaScript.这个表达式是什么意思:“ var a = b === c && d;".
- JavaScript:这个数字是如何作为输出的
- 理解javascript这个范围 - 一个简单的骨干示例
- Javascript:这个代码片段有什么作用和错误代码Uncatch TypeError:allEnemies.forE
- Javascript:这个变量放在哪个作用域中
- javascript:这个语法意味着什么
- 为什么我可以't设置z-index通过javascript这个函数?(我知道骆驼案)
- jquery javascript这个函数没有调用
- Javascript这个表单相当于jquery表单
- Javascript 这个关键字 - 内部函数
- 小javascript这个问题
- javascript:这个关键字
- Javascript这个对象在间隔/超时