Jquery UI datepicker.对象中的选项.& # 39;这个# 39;不引用对象的内部函数
jquery ui datepicker . options in object. 'this' inside inner functions not referencing the obj
jquery UI datepicker:
我想传递的选项作为一个对象,像这样:
obj = {
beforeShow: function(input) {
console.log(this);
}
}
当我像这样调用: obj.beforeShow()
时,'this'将打印为我在顶部定义的对象。当,我这样调用:$("#somelement").datepicker(obj);
, 'this'打印为jquery对象#someelement
。
我的要求是:
我在按钮面板上添加了自定义下拉。它们包含"昨天,上个月"。使用相同的代码将此选择框添加到事件beforeShow
和onChangeMonthYear
的函数中。当第一次显示datepicker
以及月份、年份发生变化时,自动调用这些事件。但是,我没有发现当"日期"改变时应该触发的任何事件(比如从当月的20日到22日)。因此,我想通过调用this.beforeShow()
来调用该对象的beforeShow
事件。但是,'this'指的是html元素。实际上,我通过遵循一些正常的方法,如直接使用对象变量(obj)而不是"this",使其工作。,但想知道正确的方法
obj = {
beforeShow: jQuery.proxy(function(input) {
console.log(this);
}, this)
}
试试上面的代码。
编辑:解释
这是一个作用域问题。当您在另一个函数中定义一个函数时,内部函数中的this
将引用内部函数。如果您希望内部函数中的this
引用其他对象而不是外部函数,那么您可以这样做:
var objectX = function(){};
obj = {
beforeShow: jQuery.proxy(function(input) {
console.log(this);
}, objectX)
}
引用第一个代码片段:什么是jQuery。代理将做的是改变this
内部函数引用外部函数。还有其他方法可以做到这一点。下面列出了一种这样的方法。当您出于某种原因希望内部函数中的this
引用内部函数时,这将派上用场。
var _self = this;
obj = {
beforeShow: function(input) {
console.log(_self);
}
}
相关文章:
- JS,“;对象”;,这个和那个.来自蟒蛇这真的让我很困惑.(双关语)
- 丢失对象“;这个“;方法中的上下文
- 如何将对象传递给这个js函数
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 替代'self=这个'带有javascript中的对象
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 如何绑定“;这个“;在$http.post中->在AngularJS中解析/拒绝?(现在this=Window对象
- 如何使用'这个“;对象文字中的关键字
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- 在对象中定义JavaScript获取和设置函数,而不使用“;这个“;
- 我该如何解决这个问题;参考网格”;在JavaScript中完成的对象数
- 我可以将控制器注入到这个 Formly 选择框对象中吗?
- 为什么这个对象会消失
- 如何循环通过这个javascript对象
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- 这个对象构造函数阻止我的脚本运行
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- "这个“;对象函数内部的引用
- Javascript纯对象:这个属性发生了什么?