所以我正在与手动表 http://handsontable.com/目前项目的 jQuery 插件,我已经编写了一些自定义函数来使用它。
我目前遇到问题的函数是我编写的一个函数,用于返回当前选定的单元格(当用户仅选择一个而不是多个时,是的,已检查)。
这是我的代码:
function getCurrentCell(){
var selection = $('div.current');
var left = selection.offset().left;
var right = left + selection.width();
var top = selection.offset().top;
var bottom = top + selection.height();
$('div.active').find('table').find('td').each(function(){
if($(this).offset().left >= left && $(this).offset().left <= right && $(this).offset().top >= top && $(this).offset().top <= bottom){
return this;
}
});
return false;
}
但是,每当我调用该函数时,例如:
var cell = getCurrentCell();
然后尝试alert(cell)
or console.log(cell)
,我得到一个false
返回值。
我最初的想法是坐标会以某种方式关闭,因此不会找到符合条件的元素,所以我尝试通过添加来检查...
$(this).css('background-color', 'black');
...就在之前return this
线。这样,如果找到正确的表格单元格,它将在实际返回代码之前显示在屏幕上。有趣的是,正确的单元格always其背景颜色已正确更改。所以,这个函数is找到正确的单元格,并且它正在 if 循环中执行代码,但是当我尝试将返回值捕获到变量中时,该变量始终为 false。
任何帮助都会很棒!谢谢!
您正在使用.each() http://api.jquery.com/each有一个函数
.each(function(){
...
return this;
});
return false;
这将从回调中返回(如果this
was false
),但决不从外部突破并返回getCurrentCell
功能!所以,那个人总会回来的false
.
快速解决:
var result = false;
<...>.each(function(){
if (<condition>) {
result = <found element>;
return false; // break each-loop
}
});
return result; // still false if nothing found
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)