代码之家  ›  专栏  ›  技术社区  ›  Teej

jquery中的全局变量

  •  0
  • Teej  · 技术社区  · 15 年前

    我一直在写这个剧本:

    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript">
    $(function(){
        compentecy = $('#competency_id');
        $('#add_competency').bind('click', function(e){
            e.preventDefault();
            $.post('/script.php', {competency_id: compentecy.val(), syllabus_id: 2}, function(){
                // competency = $('#competency_id');
                competency.children('option[value=' + compentecy.val() + ']').remove();
            });
        });
    });
    </script>
    

    在$.post回调函数中,似乎无法访问全局变量。我试过 $.competency 但没用。我总是得到一个“能力未定义”的错误。我不得不在回调函数中重新初始化变量。有没有办法不重新初始化回调函数中的变量?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Teej    15 年前

    天啊。我想这是其中一天吧。变量的拼写不正确:p

        2
  •  1
  •   Nick Craver    15 年前

    你可以用 .proxy() 这样地:

    $.post('/script.php', {competency_id: compentecy.val(), syllabus_id: 2}, 
      $.proxy(function(){
        this.children('option[value=' + this.val() + ']').remove();
      }, compentecy)
    );
    

    $.proxy() 让你决定 this 在回调中,仅适用于以下情况:)