如何在两个单独的函数中使用JavaScript变量?

时间:2010-01-22 20:32:06

标签: javascript jquery callback

我有以下jquery函数

$(function(){

  $('.buttonEffectWrapper a').not('#browse-all a').hover(function(){

    pauseResume();
    var imageBrowserContent = $('#mainImageBrowser').html();
    $('#mainImageBrowserTabButtonWrapper, #slideshow > div')
      .animate({opacity:"0"}, {duration:250});

    ajaxFunction('footer');
    alert(imageBrowserContent);

  },
  function(){
    alert(imageBrowserContent);
  })

} );

在鼠标悬停时,我将#mainImageBrowser的内容复制到变量imageBrowserContent 然后它执行一个Ajax函数,它替换#mainImageBrowser的html内容,然后提醒我内容是什么。所有这些都有效。

我的意图是用原始内容替换#mainImageBrowser,原始内容将存储在imageBrowserContent中。我无法让它工作,所以我放了alert(imageBrowserContent);并且每次弹出都没有警报。我错过了什么?如果我在警报中放置一个文本字符串,它弹出很好,所以我很困惑......

1 个答案:

答案 0 :(得分:3)

重新格式化后,问题显示出来。 imageBrowserContent是第一个函数的局部变量。它在第二个函数内部不可见。如果将变量声明移动到父函数,它将起作用。

$(function(){
    var imageBrowserContent;
    $('.buttonEffectWrapper a').not('#browse-all a').hover(function(){
        pauseResume();
        imageBrowserContent = $('#mainImageBrowser').html();

        $('#mainImageBrowserTabButtonWrapper, #slideshow > div')
            .animate({opacity:"0"}, {duration:250});
        ajaxFunction('footer');
        alert(imageBrowserContent);
    },
    function(){
        alert(imageBrowserContent);
    })
});