проблема с областью JavaScript - PullRequest
0 голосов
/ 07 декабря 2009

Фрагмент кода следующим образом:

$(this).parents('td:first').next().find('option').customizeMenu('myMenu2');

Это работает, но:

var listener = function(){
 $(this).parents('td:first').next().find('option').customizeMenu('myMenu2');
};
listener();

не работает, почему и как это исправить?

Ответы [ 2 ]

6 голосов
/ 07 декабря 2009

'this' не указывает на один и тот же объект при помещении в функцию, оно указывает на текущую функцию (в вашем случае 'listener'). Вместо этого возьмите его в качестве параметра, если это вариант (зависит от того, как вы вызываете свою функцию).

var listener = function(obj){
 $(obj).parents('td:first').next().find('option').customizeMenu('myMenu2');
};

listener(this);
3 голосов
/ 07 декабря 2009

this - это функция. Попробуйте:

var listener = function(element){
  $(element).parents('td:first').next().find('option').customizeMenu('myMenu2');
};
listener(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...