从onchange事件处理程序中提取变量以用于其他函数

时间:2013-05-31 20:05:25

标签: javascript jquery variables event-handling

我有一个事件处理程序侦听下拉列表中的更改并设置变量的值。我已将变量声明为全局,即在任何函数之外,然后将值设置为更改。但是,一旦它发生了变化,我需要能够在其他函数中获取变量(不在even处理程序中)。我如何从事件处理程序中“提取”它?我试图返回但没有运气 - 这是代码:

$(document).on('change', 'select#search_subject', function () {
    if ($('#sBar3').show()) {
        $('#sBar3').hide();
    }
    var subject = $('#search_subject>option:selected').text();
    var id = $('#search_subject>option:selected').val();
    ajaxSubject(subject, '#sBar3');
    return subject;
});
console.log(subject);   

日志只显示'空字符串',我感到困惑。如果可能的话,我不想重新编写代码以包含事件处理程序中的所有内容(那里有很多Google Map生成代码,这会让人感到痛苦) - 我只需要将事件处理器中的主题变量取出来有道理 - 谢谢

2 个答案:

答案 0 :(得分:5)

通过使用var关键字,您将创建一个新的局部变量,然后您将主题文本分配给。如果您已在全局范围内定义了subject,那么您的分配行应该只是:

subject = $('#search_subject>option:selected').text();

答案 1 :(得分:0)

如果以后没有创建选择,那么在删除使主题为本地的var后,这将是更简单的代码

$("#search_subject").on('change',function () {
  $('#sBar3').toggle();
  subject = $('option:selected',this).text();
  var id = $(this).val(); // not used?
  ajaxSubject(subject, '#sBar3');
  window.console && console.log(subject);   
  return subject;
});