Сохраните функции обратного вызова jQuery в отдельном файле. - PullRequest
1 голос
/ 08 июня 2010

Возможно, я что-то пропустил, но допустим, у меня есть это:

$('a.delete').click(function(){
   resp=window.confirm("Are you sure you want to delete this?");
   if(resp)
       return true;
   else
       return false;
}

Теперь я хочу сохранить эту функцию обратного вызова в отдельный файл js, потому что я буду использовать ее на нескольких страницах. Моя логика сказала мне сделать это:

$('a.del').click(delete_element());

Файл js выглядит так:

function delete_element(){
   resp=window.confirm("Are you sure you want to delete this?");
   if(resp)
       return true;
   else
       return false;
}

Это не работает. Каждый раз, когда загружается моя страница, отображается окно подтверждения, даже если я не нажал на ссылку.

Ясно, что моя логика на этот раз провалилась. Чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 08 июня 2010

$ ( 'a.del') нажмите (delete_element ());.

Это вызывает функцию delete_element () и надеется, что функция будет возвращена.

$('a.del').click(delete_element);

Это (обратите внимание на отсутствие ()) установит обработчик клика в delete_element.

1 голос
/ 08 июня 2010

попробовать;

$('a.delete').click(function(){
  delete_element()
}

редактировать

Я бы передал ссылку на элемент для удаления в функцию delete_element и удалил ее оттуда, поскольку имя функции говорит, что delete_element не ask_to_delete_element.

0 голосов
/ 08 июня 2010

Как насчет

function deleteElement() {
   return window.confirm("Are you sure you want to delete this?");
}

$('a.delete').click(deleteElement);

Или, если это стандартное поведение для ваших страниц:

$('a.delete').live('click', function() {
   return window.confirm("Are you sure you want to delete this?");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...