jQuery обработчики событий для функций Javascript - PullRequest
1 голос
/ 03 августа 2011

Название вопроса немного неясно, поэтому позвольте мне объяснить.

Требование, которое мне только недавно объяснили, - это использование jQuery в моем проекте. Но было отмечено, что с моими функциями все в порядке и их можно использовать повторно, если они содержат некоторое количество jQuery.

Итак, я впервые исследую мир слушателей событий (js сторона не в HTML)

Стандартное событие Jquery onclick

referenceToElement.onclick = function () { alert('here'); };

Одна вещь, которую я замечаю, это то, что функция на самом деле не имеет имени. Есть ли какой-нибудь чистый способ сделать что-то вроде:

referenceToElement.onclick = myOldJavascriptFunction();

function myOldJavascriptFunction()
{
    //blahblahblah
}

Это хорошая практика или есть лучший способ сделать это. Будет ли это работать даже сейчас, когда я думаю об этом?

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Даже если вопрос на самом деле стоит понизить голос, так как вы могли бы легко ответить на все эти вопросы с помощью поиска, я дам вам предупреждение.

Это

referenceToElement.onclick = function () { alert('here'); };

наверняка не стандартная вещь jQuery.Это чистый Javascript, добавляющий свойство к ссылке DOM, в данном случае анонимная функция.Однако сейчас вы задали два вопроса.

  • Можем ли мы дать этой анонимной функции имя?=> ДА
  • можем ли мы ссылаться на функцию, которая определена где-то еще?=> ДА

Чтобы дать ему имя, мы можем просто создать именованное выражение функции вот так

referenceToElement.onclick = function myFunctionName() { alert('here'); };

Для ссылки на функцию мы простопередать его имя

referenceToElement.onclick = myOldJavascriptFunction;

Наконец, синтаксис jQuery для добавления того же прослушивателя событий будет выглядеть так:

$( referenceToElement ).click( myOldJavascriptFunction );
1 голос
/ 03 августа 2011

Ваш первый пример - простой и нормальный javascript, никак не связанный с jQuery. Если бы вы использовали jQuery, строка выглядела бы так:

$(referenceToElement).click(function () { ... });

Но в любом случае кажется, что у вас вопрос об анонимных функциях. Вы можете назначить функцию имени переменной или использовать объявление функции и по-прежнему ссылаться на эту функцию по имени:

function myFunction () { ... }

$(referenceToElement).click(myFunction);
1 голос
/ 03 августа 2011

Да, вы были почти правы:

referenceToElement.onclick = myOldJavascriptFunction;

Обратите внимание на отсутствие скобок. Это передает ссылку на функцию событию onclick. Также обратите внимание, что это обычный старый JavaScript, а не jQuery. Способ jQuery сделать это больше похож на:

$(referenceToElement).click(myOldJavascriptFunction);
...