Javascript js,将var解析回其父级

Javascript js,将var解析回其父级,javascript,jquery,variables,Javascript,Jquery,Variables,我有两个函数,父函数是u triggerAction,而子函数是u triggerNormal,父$current正在更新,如何解析新的 $current = $index 从触发正常回到触发动作 _triggerAction = function(el, click, fx) { var $current, $link; $link = el.find('.tab-menu').find('li'); $current = 0; if (click) {

我有两个函数,父函数是u triggerAction,而子函数是u triggerNormal,父$current正在更新,如何解析新的

$current = $index
从触发正常回到触发动作

  _triggerAction = function(el, click, fx) {
    var $current, $link;
    $link = el.find('.tab-menu').find('li');
    $current = 0;
    if (click) {
      log('Trigger by click');
      return $link.click(function() {
        return __triggerNormal(this, el, $current, fx);
      });
    } else {
      log('Trigger by hover');
      return $link.hover(function() {
        return __triggerNormal(this, el, $current, fx);
      });
    }
  };

 __triggerNormal = function(thisEl, el, $current, fx) {
    var $index;
    if (!($(thisEl).hasClass("active"))) {
      log('current slide ' + $current);
      log($index = $(thisEl).index());
      __addRemoveClass(thisEl);
      __fxAction(el, fx, $current, $index);
      return $current = $index;
    }
};
而不是

return __triggerNormal(this, el, $current, fx);

$current
在函数之间不共享,因此在
\u triggerNormal
内部

return $current = $index;
只更新局部变量。你可以直接写

return $index;


顺便说一句,事件处理程序的返回值仅用于确定是否阻止默认操作和停止传播。在您的情况下,似乎根本不需要返回$current。

谢谢,这似乎是正确的,但它仍然不会更新父级中的$current。也许您可以创建一个演示
$current=\u triggerNormal(…)
将使用
\u triggerNormal
返回的任何内容更新
$current
。我记录了新的返回值$current=\u。。。。但它返回未定义的结果,您能看看这里吗?正如我所说,请创建一个功能性的JSFIDLE演示。。。这对我们来说更容易测试。请解释您的代码实际应该做什么。这是一个选项卡脚本,调用触发器操作来检测它是否是悬停或单击交互,触发器法线用于捕获当前
  • 索引,并执行选项卡转换,它应该在完成后更新$current。演示:如果您将鼠标悬停在列表上,您将在控制台中看到未定义的消息。
    return $index;