Глобальные переменные в jQuery - PullRequest
0 голосов
/ 23 апреля 2010

Я работал над этим сценарием:

<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 кажется, что я не могу получить доступ к глобальным переменным. Я попробовал $. Компетентность , но это не сработало. Я всегда получаю ошибку «компетенция не определена». Мне пришлось заново инициализировать переменную внутри обратного вызова. Есть ли способ НЕ переинициализировать переменную внутри обратного вызова?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2010

OMG.это один из тех дней, я думаю.написание переменной было неправильным: P

1 голос
/ 23 апреля 2010

Вы можете использовать .proxy() следующим образом:

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

$.proxy() позволяет определить, что this находится внутри обратного вызова, только длятакие случаи:)

...