在Jquery函数中返回var

时间:2013-10-25 19:50:00

标签: javascript jquery

我想在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必须是全局var

请帮帮我吗?

3 个答案:

答案 0 :(得分:4)

这里有几个问题。首先,Pagepage是两个不同的变量,但我们假设您已将它们命名为相同 - 您的代码仍然不起作用。

问题是,您的事件处理程序不会立即运行,它只在双击发生时运行。在此上下文中,在事件之外定义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时,它只会提醒'是的!'如果首先双击原始Montant div。否则它会做其他事情(或者如果省略else则没有任何内容。)

以下是jsfiddle的一个例子:

http://jsfiddle.net/Wb9Ba/

如果你立即点击第二个按钮,它会显示“其他”,但如果你双击第一个按钮,然后点击第二个按钮,它会显示“是的!”

答案 1 :(得分: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);
   }
});

答案 2 :(得分:0)

由于dblclick内的匿名方法是异步的,因此无法返回内容。

相反,您可以创建一个新功能:

var page;

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

function display(page) {
    alert(page);
    // ...
}