-5

Jquery 関数で var "Page" を返したい:

var Page ;

 $('#Montant').dblclick(function(){

     $("#Encadrement_Encaissement_Menu_Creation").show();

     return Page = 'Crea_Bouton';
 }); 

alert(Page); //does not work

しかし、それは機能しません。

目標は、var ページのアラートを作成することではありません。

私が持っている他のページで: if(Page == 'Crea_Bouton') { //Action }

したがって、 Page はグローバル変数でなければなりません

助けてくれませんか?

4

3 に答える 3

4

ここにはいくつかの問題があります。まず、Pagepageは 2 つの異なる変数ですが、同じ名前を付けたと仮定しましょう。コードはまだ機能しません。

問題は、イベント ハンドラーがすぐに実行されず、ダブルクリックが発生したときにのみ実行されることです。pageイベントの外側で定義しても、このコンテキストでは意味がありません。最初にヒットしvar page;、次にイベントを登録し (ただし、イベント関数は実行しません)、空の変数をアラートします (イベントがまだトリガーされていないため)。

dblclick イベントをトリガーしても、そのアラートは実行されません。

これを試して:

var page;
$('#Montant').dblclick(function(){

  $("#Encadrement_Encaissement_Menu_Creation").show();

  page = 'Crea_Bouton';
});

$('#anotherdiv').click(function(){
  if(page === 'Crea_Bouton'){
    alert("yep!");
  }else{
    alert("Something else")
  }
})

これで、クリックされたときに、#anotherdiv'yep!' という警告のみが表示されます。元のMontantdiv が最初にダブルクリックされた場合。それ以外の場合は、何か他のことを行います (省略した場合は何もしませんelse)。

jsfiddle の例を次に示します。

http://jsfiddle.net/Wb9Ba/

すぐに 2 番目のボタンをクリックすると、「その他」と表示されますが、最初のボタンをダブルクリックしてから 2 番目のボタンをクリックすると、「はい」と表示されます。

于 2013-10-25T19:54:47.670 に答える
1

jQuery のように「コールバック」関数を使用します。

function onReturn(page) {
   // Process your returned value
   if (page == 'Crea_Bouton') {
       // Action
       alert(page);
   }
}

$('#Montant').dblclick(function(){
   $("#Encadrement_Encaissement_Menu_Creation").show();
   var page = 'Crea_Bouton';
   onReturn(page);
});

または、dblclick コールバック内で値を処理します。

$('#Montant').dblclick(function(){
   $("#Encadrement_Encaissement_Menu_Creation").show();
   var page = 'Crea_Bouton';

   // Do something with my page
   if (page == 'Crea_Bouton') {
       // Action
       alert(page);
   }
});
于 2013-10-25T20:01:40.337 に答える
0

内部の匿名メソッドdblclickは非同期であるため、何かを返すことはできません。

代わりに、新しい関数を作成できます。

var page;

$('#Montant').dblclick(function () {
    $("#Encadrement_Encaissement_Menu_Creation").show();
    display('Crea_Bouton');
}); 

function display(page) {
    alert(page);
    // ...
}
于 2013-10-25T20:02:44.963 に答える