【发布时间】:2025-12-08 06:25:01
【问题描述】:
您好 * 用户,
我有一个关于我尝试制作的 JQ UI 小部件的问题。 我有一个带有以下内容的 _create 命令:
this.findinput = this.element.children('input:text')
.addClass('ui-search-input ui-widget ui-state-default ui-background-none ui-corner-left')
.wrap('<div class="ui-position-wrapper" />')
.bind('focusin focusout',this._checkval)
.bind('keyup',this.inputchanged);
如您所见,我将一些函数绑定到输入字段,因此我可以操作文本和布局。 但我的问题是该函数出于某种原因覆盖了全局对象“this”及其变量。 我怎样才能将它们保留在函数中? (我使用函数的原因是我可以从小部件外部访问它们)
inputchanged: function(e) {
$target = $(e.target);
if (($target.val()).length != 0) {
this.element.children('.ui-search-reset').children().addClass('ui-icon').removeClass('ui-helper-hidden');
} else {
this.element.children('.ui-search-reset').children().addClass('ui-helper-hidden').removeClass('ui-icon');
}
},
返回:this.element 未定义,我也无法访问 this.options?
此外,如果我将一个函数绑定到表中的“tr”,然后按“td”,它会将“td”设置为目标对象,而不是绑定的“tr”——这是为什么? :)
我对 jQuery 很陌生,所以这可能是一些愚蠢的问题,或者我可能做错了 - 如果是这种情况,请告诉我!
【问题讨论】:
-
JQuery 文档总是一个很好的读物:api.jquery.com/bind。这也可以帮助你:remysharp.com/2007/04/12/jquerys-this-demystified