【问题标题】:jQuery save local variable for use later on in the codejQuery 保存局部变量以供以后在代码中使用
【发布时间】:2011-09-05 00:33:21
【问题描述】:

无论如何,我可以在其函数之外保存或访问局部变量吗?考虑下面的代码:

$( "#droppable2" ).droppable({
        activeClass: "ui-state-hover",
        hoverClass: "ui-state-active",
        accept: "#draggable3",
        drop: function( event, ui ) {

            jdc = $(this).attr("id"); //I need to use this value later
            $( this )
                .addClass( "ui-state-highlight" );
                var x = ui.helper.clone();   
                x.appendTo('body');

                var jdi = $("img").attr("id");// I need to use this value later

                $(this).droppable( 'disable' );
        }
    });

是否有办法获取两个变量(上面的 jdc 和 jdi)的值以供以后在函数之外使用?

最终目标是获取可放置容器的id和放置元素的内容。

【问题讨论】:

  • 你可以将它们定义为全局变量权
  • 我不是 100% 确定,但只是尝试在初始化时不使用 var 声明应该使其成为全局。
  • @kobe,感谢您的回复。如果我将它们定义为全局变量,我是否能够在函数内本地更改它们的值并在函数外部获取更新的值?对不起,如果我听起来很天真,我是新手。此外,该项目将具有大约三个带有局部变量的此类函数,这些函数的值我需要稍后在脚本中调用。但我想如果我让这个功能发挥作用,我可以继续使用其他功能。谢谢
  • 你可以,但正如其他人建议的那样,你可以使用 .data

标签: javascript jquery variables get local


【解决方案1】:

您总是可以将它们作为数据存储在元素上:

$(this).data('jdi', $('img').attr('id'));

然后你可以通过另一个调用“.data()”从那个元素中取回它:

var theSavedJdi = $('whatever').data('jdi');

【讨论】:

    【解决方案2】:
    var jdc;
    var jdi;    
    
    $( "#droppable2" ).droppable({
        activeClass: "ui-state-hover",
        hoverClass: "ui-state-active",
        accept: "#draggable3",
        drop: function( event, ui ) {
    
            jdc = $(this).attr("id"); //I need to use this value later
            $( this )
                .addClass( "ui-state-highlight" );
                var x = ui.helper.clone();   
                x.appendTo('body');
    
                jdi = $("img").attr("id");// I need to use this value later
    
                $(this).droppable( 'disable' );
        }
    });
    

    【讨论】:

    • 感谢 Thomas 的倡议;和 Kei 执行。非常感谢大家。奇迹般有效。 :D
    【解决方案3】:

    试试这个:

    jQuery(element).data(key,value);
    // Store arbitrary data associated with the matched elements.
    

    或者在函数之外声明你的变量。

    var example;
    
    function abc(){
       example = "12345";
    }
    
    abc();
    
    console.log(example);
    

    【讨论】:

    • 只是为了明确(对于那里的任何新手 - 我是其中之一,这是我做错的),在函数外部声明变量(var example;)并定义变量(example = "12345";) 函数内部是这个答案的关键。如果您在函数内部声明 + 定义变量 (var example = "12345";),它将不起作用 - 这只会在本地应用(在函数内部)。简而言之,要全局保存一个局部变量,在函数外部声明(使用var),在函数内部定义(不要使用var)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多