我有以下函数,它只是遍历对象列表并返回正确的对象:
function findLine(textElement,caretIndex){
jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
当我用这个调用它时,我得到 undefined
作为返回。
line = findLine(textElement,caretIndex);
alert(line);
奇怪的是,当我运行 line = findLine(textElement,caretIndex);
时,函数内的警报被触发并返回正确的结果。所以 this
是正确的值,但是当函数外部的第二个警报被触发时,我得到 undefined
。
当我从函数返回值时发生了一些错误,或者与将该值分配给变量有关。我在这里做错了什么?
最佳答案
问题是您返回此
是在jQuery.each
方法的回调中,而您的findLine
没有返回任何内容。
function findLine(textElement,caretIndex){
return jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
如果您返回
jQuery.each
调用,您最终会得到一个 jQuery 对象,其中包含您想要的每个 this
.
关于JavaScript 函数 "return this"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228564/