gpt4 book ai didi

javascript - 在javascript中检索正确的 "this"

转载 作者:行者123 更新时间:2023-12-03 11:33:26 26 4
gpt4 key购买 nike

我已经构建了自己的对象:

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();

问题出在更改事件中,这是指选择字段。但是,我想访问从池函数返回的实际任意对象的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>');
}
});
},

关于javascript - 在javascript中检索正确的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com