0

我正在尝试在函数中创建一个变量,然后我可以在不同的函数中再次重新定义它,我想使用 jquery .data 来做到这一点,但不确定如何。

我有这个

$(".photo").click(function() {
  var id = $(this).attr('id');
});

在下一个函数中,我想重新定义 id 变量......使用以前的 id 变量值,关于如何做到这一点的任何想法?

$("#next").click(function() {  
  var id = $(id).next().attr('id');
});
4

3 回答 3

0

您需要定义该变量globally,以便其他函数可以使用它。

示例测试代码

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    $(function()
    {
        var GlobalScope;

        $('#boxes').click(function()
        {
            GlobalScope = $.trim($(this).html());
        });

        $('#boxes_').click(function()
        {
            console.log(GlobalScope);
        });
    });

</script>

<div id="boxes">
    One
</div>

<div id="boxes_">
    Two
</div>

当您单击框时,它将在单击后将GlobalScope变量值设置为One现在,boxes当您单击boxes_ GlobalScope值时将One位于Console.log.

于 2013-02-14T04:07:57.387 回答
0

答案是全局变量,所以它最终是这样的:

$(".photo").click(function() {
    id = $(this).attr('id');
});

$("#next").click(function() {  
      var id_a = $('#' + id).next().attr('id');
      id = id_a;
});

$("#prev").click(function() {  
      var id_b = $('#' + id).prev().attr('id');
      id = id_b;
});
于 2013-02-14T02:25:32.357 回答
0

您需要为这两个函数定义新的公共变量作为@loriensleafs 的答案。

此外,我建议使用 Closure 来防止范围问题。

(function() {
    var id;    // common value but canb be accessed only in this function.

    $(".button").click(function() {
        id = $(this).attr('id');
    });

    $("#output").click(function() {  
        $("p").css( "background", "none" );
        $("div").find('#' + id).css( "background", "red" );
    });
})();

检查http://jsfiddle.net/cwdoh/G2RjH/2/

于 2013-02-14T03:29:58.737 回答