使变量可用于其他回调

时间:2012-12-20 02:34:23

标签: jquery

我想让变量可用于其他回调函数:

$(function(){
    $("#home_sec_2 img").attr("id", function (arr) {
        return arr;
    });
    $('#home_sec_2').on('mouseover','img',function(){
        position = $(this).position().left;
        var $ll = $(this).prev();
        console.log($ll);
        /* $ll.css({left: position}); */
        $ll.css({left:position});

        $ll.addClass('shown');
        $ll.stop().slideToggle('slow');
        var $this = $ll;
        console.log(position);
        var pp = $ll.position();
        console.log(pp);
    }),     
    $('#home_sec_2').on('mouseleave','img',function(){
        /* $ll = $(this).attr('id');     */
        **var $img = $(this).prev()**
        $img.slideToggle('slow');
         console.log($img);
    })
}); 

$img变量已开启我想提供如何访问它。

2 个答案:

答案 0 :(得分:2)

更改$img的范围,使其超出该约束范围,并且就在您的文档准备就绪之下。 e.g。

$(function(){
  // declare $img scope here
  var $img;

  /*
    other code
    ...
    if ($img) { ... }
    ...
  */

  $('#home_sec_2').on('mouseleave','img',function(){
    // assign it here
    $img = $(this).prev();
  });
});

在其他地方使用之前,请务必先测试if($img),或设置默认值。

答案 1 :(得分:2)

为什么不制作全局变量?

<script>
 var your_var;
  $('#home_sec_2').on('mouseover','img',function(){
    your_var = 'some initialization';
  });
  $('#home_sec_2').on('mouseleave','img',function(){
    alert(your_var);
  });
</script>