jQuery中的全局变量

jQuery中的全局变量,jquery,global-variables,global,Jquery,Global Variables,Global,我一直在编写以下脚本: <script type="text/javascript" src="/js/jquery.js"></script> <script type="text/javascript"> $(function(){ compentecy = $('#competency_id'); $('#add_competency').bind('click', function(e){ e.preventDefaul

我一直在编写以下脚本:

<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>

$(函数(){
薪酬=$(“#能力"id”);
$('add#u competency')。绑定('click',函数(e){
e、 预防默认值();
$.post('/script.php',{competency\u id:compentecy.val(),教学大纲\u id:2},函数(){
//能力=$(“#能力_id”);
competency.children('option[value='+compentecy.val()+']').remove();
});
});
});
在$.post回调函数中,似乎无法访问全局变量。我试过了,但没用。我总是会出现“能力未定义”的错误。我不得不在回调中再次初始化变量。有没有办法不重新初始化回调中的变量?

您可以这样使用:

$.post('/script.php', {competency_id: compentecy.val(), syllabus_id: 2}, 
  $.proxy(function(){
    this.children('option[value=' + this.val() + ']').remove();
  }, compentecy)
);
让您确定回调中的
是什么,仅适用于以下情况:)

您可以这样使用:

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

让您确定回调中的
是什么,仅适用于以下情况:)

OMG。我想这是那种日子。变量的拼写不正确:P

OMG。我想这是那种日子。变量的拼写不正确:P

虽然不理想,但应该可以。这是整个脚本,还是你在这里省略了部分?虽然不是很理想,但应该可以。这是整个剧本,还是你省略了部分?很高兴你发现了它。:)顺便说一句,您应该首先用
var-capability=$(“#capability_-id”)声明变量
将作用域限制在函数及其嵌套函数内,否则它将附加到全局
窗口
。很高兴您发现了它。:)顺便说一句,您应该首先用
var-capability=$(“#capability_-id”)声明变量
将作用域限制在函数及其嵌套函数内,否则它将附加到全局
窗口