Как получить доступ к переменной в слушателе событий в Javascript - PullRequest
0 голосов
/ 04 августа 2011

Мне нужно получить доступ к некоторым переменным из своего рода «слушателя» (для Facebox ) в моем javascript. Как я могу передать переменные между функциями JavaScript и слушателями событий?

Я немного поработал с областью видимости, но кажется, что объявление глобальных переменных немного хакерски, особенно когда вы начинаете учитывать другие элементы управления (т. Е. Разбивку на страницы для моих результатов в модальном режиме), которые не будут сидеть так а также глобальные переменные.

Это раздел, который вызывает у меня проблемы:

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();

})

Ответы [ 2 ]

1 голос
/ 04 августа 2011

В примере, который вы использовали, переменная за пределами $ (document) .bind ('reve.facebox', function () {}) будет правильным дизайном.Эта ссылка может помочь:

http://api.jquery.com/bind/

Перейти в раздел «Передача данных события»

0 голосов
/ 04 августа 2011

Ну, вы не указали, откуда объявлены переменные источника и песни.Если они исходят от ввода, заполненного пользователем, то, я думаю, у вас не возникнет проблем.Если вы присваиваете значение в clarify_loader, тогда просто используйте глобальные переменные

var var1, var2;

function a(){
    var1 = "x"
    var2 = "y"
}

function b(){
    alert(var1) //x
    alert(var2) //y
}

, а затем при вызове функций a и b соответственно ваши переменные будут иметь значения x и y.

...