web-dev-qa-db-ja.com

jQueryは、後でコードで使用するためにローカル変数を保存します

関数の外でローカル変数を保存またはアクセスできる方法はありますか?以下のコードを検討してください:

$( "#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' );
        }
    });

関数の外で後で使用するために2つの変数(上記のjdcとjdi)の値を取得する方法はありますか?

最終的な目標は、ドロップ可能なコンテナのIDとドロップされた要素のコンテンツを取得することです。

13
Sol

これを試して:

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

または、関数の外で変数を宣言します。

var example;

function abc(){
   example = "12345";
}

abc();

console.log(example);
20
Thomas

あなたはいつもそれらを要素のデータとして保存することができます:

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

次に、「。data()」をもう一度呼び出すことで、その要素からそれを取得できます。

var theSavedJdi = $('whatever').data('jdi');
1
Pointy
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' );
    }
});
1
kei