Как мне выполнить метод через другой метод для исходного $ (это)? - PullRequest
0 голосов
/ 31 марта 2012

Например:

function masterMethod(this, action){
 // (action); <-- But action requires $(this) to be defined.
}

$(".item").click(function(){
  function minorMethod(){
   alert($(this));
  }
  masterMethod($(this), minorMethod)
});

Как мне выполнить действие и передать $ (this) в masterMethod?

1 Ответ

3 голосов
/ 31 марта 2012

Вы можете использовать call [MDN] :

function masterMethod(element, action){
     action.call(element);
}

$(".item").click(function(){
    function minorMethod(){
        alert($(this));
    }
    masterMethod(this, minorMethod)
    // or directly here?
    // minorMethod.call(this)
});

Обратите внимание на два внесенных мной изменения: вместо прохождения$(this) в masterMethod, я передал this (элемент DOM), поскольку внутри minorMethod вы снова передаете this в jQuery.Если бы вы передавали $(this), вы бы в конечном итоге снова передали бы объект jQuery в jQuery, то есть $($(this)), что не нужно.

Я не уверен, действительно ли это вызовет ошибку, но прислучай, вы не должны называть свой аргумент this.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...