2013-06-13 2 views
1

Простой вопрос от кого-то пытается узнать:функция JQuery против обработчиков

У меня есть это:

$(function(){$("#topFlag").hover(changeFlag, setFlag); }); 

function changeFlag(){ 
    //some code 
}; 

function setFlag(){ 
    //somecode 
}; 

И все это работает (сейчас). Но то, что я ожидал использовать, было:

$(function(){$("#topFlag").hover(changeFlag(), setFlag()); }); 

В чем разница? Почему не работает changeFlag() (с парнерами)? Разве это не вызов функции? Что делать, если я хочу передать параметр функции?

Спасибо за любые идеи (или указатели на документацию, которые я могу прочитать). Я уже проверил:

http://api.jquery.com/hover/ http://www.w3schools.com/js/js_functions.asp

+0

Dup: http://stackoverflow.com/questions/14568291/what-is-the-defference-between-calling-function-in-javascipt-with-or-without-par, Dup: http: // stackoverflow .com/questions/16949879/difference-between-countup-and-countup/16949950 # 16949950 – elclanrs

+0

Кроме того, W3Schools - не лучший ресурс ... Я бы порекомендовал вам проверить MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript, вы узнаете больше и лучше там. – elclanrs

ответ

8

changeFlag является функцией.

changeFlag() вызывает эту функцию.

Вам необходимо передать функцию. Вам не нужно вызывать функцию и передавать ее значение return.

3

При добавлении скобки после имени функции, он выполняет функцию

setFlag() ; // calls the function 

Но вы хотите, чтобы функция срабатывала, при наведении курсора на элемент

И не в то время присоединения события

0

В javascript функции также являются переменными, когда вы передаете его в качестве параметра, который вы хотите отправить, чтобы выполнить, если вы пишете это yourFunc(), вы отправляете результат этой функции.
Для отправки параметра я использую это:

$(function(){$("#topFlag").hover(function(){changeFlag(param1, param2,...)}, function(){setFlag(param1, param2,...)}); }); 

это создает функцию анонима, который называют свои функции.

+0

Вы можете избежать анонимной функции, например: '$ .proxy (changeFlag, null, param1, param2)' – elclanrs

Смежные вопросы