1

プレーンjsでグローバル変数を設定できる関数を作成し、その値をjQuery関数で更新してから、jQuery関数を介して更新された値を通常のjavasciprt変数に割り当てる必要があります。

コード例は次のとおりです。

var foo; // global variable in plain js
var bar; // second global variable
jQuery(document).ready(function ($) { 

   // jquery function that updates the variable
   foo = 'updated by jquery' 

 });

bar = foo;

console.log(bar); // console should read 'updated by jquery' but it says undefined
4

3 に答える 3

3

fooオンのみを更新してready eventいますが、準備が整う前にログに記録しているためです

これを試して

jQuery(document).ready(function ($) { 
// jquery function that updates the variable
  foo = 'updated by jquery';
  console.log(foo);
});
于 2013-10-17T15:06:47.897 に答える
2

その更新はドキュメントの準備ができたときに行われるため、値を 'updated by jquery' に設定しませんが、console.log(foo)ドキュメントの準備ができた関数呼び出しよりも前に順番に発生するグローバルの一部です。

つまり、本質的に、

var foo; // #1
$(function ($) { 
  foo = 'updated by jquery';
  console.log(foo); // output : updated by jquery //#3
});

console.log(foo); // output : undefined //#2

実行順序は #1、#2、#3 です。

したがって、更新された値が必要な場合は、変更後にドキュメント .ready 内のポイント #3 でアクセスする必要があります。または、次のようなJquery Eventsを使用して値が変更されたら、イベントを発生/トリガーできます-

foo='updated';
var event = jQuery.Event( "myEvent" );
$('body').trigger(event);

// The following can now be outside of document ready
$('body').on('myEvent',function(){
   // Access updated foo value here
});
于 2013-10-17T15:08:54.733 に答える
0

あなたのコードは実際には正しく動作するはずです。ただし、コメントを順番にマーカーとして使用する場合 (#2 = "//変数を更新する jquery 関数")、[#1、#3、#2] の順序で実行されることに注意してください。 () 関数は、ドキュメントの準備ができたときに他の関数の後に実行されます。

foo を必要とするコードが ready 関数の後に実行されている限り、それは正しく読み取られるはずです。

于 2013-10-17T15:08:50.297 に答える