我想在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
请帮帮我吗?
答案 0 :(得分:4)
这里有几个问题。首先,Page
和page
是两个不同的变量,但我们假设您已将它们命名为相同 - 您的代码仍然不起作用。
问题是,您的事件处理程序不会立即运行,它只在双击发生时运行。在此上下文中,在事件之外定义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的一个例子:
如果你立即点击第二个按钮,它会显示“其他”,但如果你双击第一个按钮,然后点击第二个按钮,它会显示“是的!”
答案 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);
// ...
}