#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. удалить(это);}