繁体   English   中英

在jquery中将变量从一个函数专门传递给另一个函数而不使其成为全局变量

[英]Passing a variable specifically from one function to another in jquery without making it global

我在jquery脚本中寻找一些帮助我正在创建,生病尝试并用简单的英语分解它。

该脚本通过<ul></ul>元素使用的网格背面工作,每个<li></li>形成网格的单个组件。

如果将鼠标悬停在列表项上,则jquery脚本将展开该元素,以通过动画占据其父项的整个维度。 它一直停留在那里,直到光标移开,并且应该将自身调整回原来的位置,并且它在那里我遇到了我的问题(似乎扩展函数的变量没有正确地传递到收缩功能)。

希望这有助于简要理解,如果没有,请查看jsfiddle示例

http://jsfiddle.net/EzYeH/3/

提前谢谢任何可以解码我的ramblings并提供帮助的人。

担。

我相信我理解你要做的事情,这是一个可能的解决方案: http//jsfiddle.net/EzYeH/4/

要回答您的基本问题,将数据从起始函数“传递”到结束函数的一种方法是将其作为data-存储在元素本身上:

$this = $(this);
var position = $this.position();
$this.data('leftPos', position.left + 'px');
$this.data('topPos', position.top + 'px');

首先,您没有正确实现回调函数expand()collapse() hoverIntent插件文档 ,该参数的功能是相同的鼠标悬停这意味着有一个参数,它的活动对象和this设置为你的对象。 这意味着它无法正常工作,因为leftPos和topPos不是这些函数的参数。 要使其工作,您需要在函数中计算所需的leftPos和topPos - 它们不会传递给它。

如果你需要将原始位置存储在除全局变量之外的某个地方(我不确定你真的需要做什么),你可以使用jQuery的.data()方法将它存储在动画对象本身上。

为了帮助您使用新版本的代码,我需要了解您希望给定对象的动画每次往返的位置。 我没有完全按照你想要的开始/结束点,所以我不确定推荐哪些代码正确计算它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM