Właśnie się dowiedziałem, że .on('click') i .click() wymaga napisania nazwanej funkcji bez nawiasów.

Tak, tak

$('.close').click(close);

Dlaczego to jest takie? Chyba chcę, aby funkcja wystąpić od razu na kliknięciu, tam, gdzie zwykle pomijasz nawiasy, przy przypisaniu funkcji do zmiennej!?!

Kiedy używasz anonimowej funkcji, nawiasy muszą być tam !!

0
loveNoHate 4 grudzień 2013, 16:35

2 odpowiedzi

Najlepsza odpowiedź

Ponieważ funkcja jest przekazywana jako argument.

Jeśli po tym nie było nawiasy, byłoby ona o nazwie , a wartość powrotowa zostanie przekazana jako argument.

Chcę, aby funkcja zdarzyć się od razu na kliknięcie

"Od razu" i "On Click" są dwa bardzo różne czasy.

Kiedy używasz anonimowej funkcji, nawiasy muszą być tam

Nawiasy, które tworzą część składni wyrażenia funkcji.

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

Te, które nazywają funkcją, nie mogą.

.click(function () { ... }());
2
Quentin 4 grudzień 2013, 12:36

Ponieważ chcesz przekazać rzeczywistą funkcję jako argument (więc jQuery może to zadzwonić później, gdy element zostanie kliknięty), a nie wywołując funkcję i przekazując go wartość zwracana do .click() (co nie jest tym, czego chcesz, ale jest to, co się stało, jeśli umieścisz () po nazwie funkcji).

Cokolwiek funkcja przechodzisz jak pierwszy argument do {x0}} zostanie wywołany, gdy element zostanie kliknięty. Zawsze będzie nazywany jednym argumentem (obiekt {X1}}, który może lub nie ignorować w zależności od tego, co musi się wydarzyć na kliknięciu).

Więc możesz zrobić:

var close = function(evt) {
    // do stuff
};
$('.close').click(close);

Lub

$('.close').click(function(evt) {
    // do stuff, anonymous function
});

Tak czy inaczej, nie umieszczasz po nim () Chcesz pozwolić jquery zadzwonić do tego później, gdy wystąpi kliknięcie. JQUERY to zrobi, przechodząc niezależnie od argumentów, których chce (które wiemy, będzie 1 obiekt zdarzenia).


Aby umieścić to inny sposób: wsporniki natychmiast po słowa function:

function(arg1, arg2)

Zawsze mów, jakie argumenty oczekujesz.

Wsporniki po nazwie funkcji:

close(arg1, arg2)

Oznaczałoby, że chcesz zadzwonić tej funkcji, przechodząc w tych argumentach. Ta druga nigdy nie występuje w tym konkretnym kodzie, ponieważ nigdy nie dzwonisz close . JQUERY robi (po kliknięciu elementu).

1
Shai 4 grudzień 2013, 12:53