отправьте это как аргумент функции в jquery

#jquery

#jquery

Вопрос:

Как я могу переписать эту функцию, как показано ниже:

     $('#TblInvoiceList td img.ImgDelete').live('click' , function () {
            $(this).parent().parent().remove();
    });
  

Желаемая форма:

 $('#TblInvoiceList td img.ImgDelete').live('click' , function () {
    delete(this);        
});

delete: function(){
$(this).parent().parent().remove();
}
  

Комментарии:

1. В качестве отдельного комментария я рекомендую agains .live , где это возможно. Прибегнув к .click или .delegate было бы лучше.

Ответ №1:

Для установки значения this в функции используйте Function.call() , т.е.:

 delete.call(this);
  

Первый параметр для методов call() и apply() задает контекст (т.е. значение this ) вызываемой функции.

В качестве альтернативы, если ваш прослушиватель только должен вызывать delete , тогда напишите свой прослушиватель событий таким образом:

 $('#TblInvoiceList td img.ImgDelete').live('click' , delete);
  

поскольку нет необходимости в новом закрытии только для вызова delete .

Комментарии:

1. Но если я хочу вызвать функцию удаления из view.js тогда как это должно выглядеть: это вызов из view: $(‘#TblInvoiceList td img. ImgDelete’).live(‘click’, функция () { _this.model. deleteRow(это);}

Ответ №2:

 $('#TblInvoiceList td img.ImgDelete').live('click' , delete);

var delete = function(){
    $(this).parent().parent().remove();
}
  

Просто передайте функцию напрямую, чтобы она this была правильно ограничена.

Комментарии:

1. Спасибо, это помогает. Но если я хочу вызвать функцию удаления из view.js тогда как это должно выглядеть: это вызов из view: $(‘#TblInvoiceList td img. ImgDelete’).live(‘click’, функция () { _this.model. удалить(это);}