我需要在我的javascript中从各种“侦听器”(对于Facebox)中访问一些变量。如何在javascript函数和事件侦听器之间传递变量?
我一直在讨论范围,但似乎声明全局变量有点hacky,特别是一旦你开始考虑其他控件(即我在模态中的结果的分页)不会如此以及全球变量。
这是导致我出现问题的部分:
function song_clarify ()
{
// this launches a modal window, fills with html.
$.facebox('<div id="search"><div></div></div>');
}
// AJAX function. when called, this loads the required htmls into the modal
function clarify_loader()
{
var loadUrl = "ajax/clarify";
$("#search > div")
.html(ajax_load)
.load(loadUrl, 'search='+source+'&searchTerm='+song);
}
// Waits for the modal to be revealed before calling AJAX function.
// (if function called outside listener, nothing for the AJAX to bind to as modal appears dynamically)
$(document).bind('reveal.facebox', function() {
// Problem is here. Need to be able to do clarify_loader(source,song)
clarify_loader();
})
答案 0 :(得分:1)
在您使用过的示例中,$(document).bind('reveal.facebox',function(){})之外的var将是正确的设计。此链接可能有所帮助:
转到“传递事件数据”部分
答案 1 :(得分:0)
好吧,您没有提供声明源和歌曲变量的位置。如果它们来自用户填写的输入,那么我相信你没有问题。如果您在clarify_loader中分配值,那么只需使用全局变量
var var1, var2;
function a(){
var1 = "x"
var2 = "y"
}
function b(){
alert(var1) //x
alert(var2) //y
}
然后当你分别调用函数a和b时,你的变量将具有值x和y。