Javascript函数"return this"不工作
Javascript function "return this" not working
我有以下函数,它只是遍历对象列表并返回正确的对象:
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
。
当我从函数返回值时发生了错误,或者与将该值分配给变量有关。我哪里做错了?
问题是你的return this
是在jQuery.each
方法的回调,而你的findLine
不返回任何东西。
function findLine(textElement,caretIndex){
return jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
return this;
}
});
}
如果你return
的jQuery.each
调用,你将结束与一个jQuery对象,其中包含每个this
,你想要的
来自jQuery文档中的。each():
可以通过使回调函数返回false,在特定的迭代中中断$.each()循环。返回非false与for循环中的continue语句相同;它将立即跳转到下一次迭代。
所以你的return this
语句本质上是continue
语句,因为this
是非假的。将你的函数修改成这样可能会起作用(未经测试…可能有比。each()更好的函数,如。filter()或。grep()):
function findLine(textElement,caretIndex){
var result;
jQuery.each(textElement.lines(), function() {
if(this.startIndex <= caretIndex && this.endIndex >= caretIndex) {
alert(this);
result = this;
return false; // returning false in the callback just causes the loop to exit
}
});
return result;
}
相关文章:
- Scriptaculous dom:仅加载工作"有时“;
- 我对“;返回true"嵌套函数内部;t工作
- Jquery scrollTop动画不工作"无法读取属性'top'无风
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- 无法使Nativescript插件工作"nativescript admob”;
- "npm运行构建:css"不能工作,而当我自己运行脚本时是可以的
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- jQuery css"点击“;不会'更改日历中选定的月份后无法工作
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- "键“;jQuery中的对象无法正常工作
- 得到"标签“;标签在Internet Explorer 6中工作(用于单选按钮)
- 如何获得Facebook Like Box"黑暗方案”;正确工作?(背景是透明的.)
- 工作方法:document.getElementById(“ElementName”).style="显示:阻
- "点击“;不会'我不能在手机上工作
- 如何“;(M[key]||(M[key]=[])).push(elem)"工作
- "添加到购物车”;按钮不'由于ReferenceError,无法工作
- 如何"递归AJAX回调”;在JavaScript工作中
- 其中的行“xmlns:ng="http://angularjs.org"`工作/需要
- 如何使工作jquery"“滑动”;在iPad上滚动
- 像在PHP中一样,在jQuery中执行单引号(')和双引号(quot;)的工作