Это не сработает:
$('#myElement').click(ElementClicked($(this)));
Выполняет функцию ElementClicked()
с любым значением this
на момент написания и связывает возвращаемое значение из ElementClicked()
с событием click
. Что в данном случае ничего.
Вам необходимо передать функцию в событие щелчка, например:
$('#myElement').click(function () { ElementClicked($(this)); });
Это создает (n анонимную) функцию, которая будет связана с событием click
, и при запуске функция вызывает ElementClicked()
, передавая this
. Функция ElementClicked
может быть определена как:
function ElementClicked(elem) {
elem.addClass('clicked');
}
Как вы заметите, this
внутри функции, связанной с событием, будет щелкаемым элементом. Таким образом, вместо создания обертки функции, которая вызывает функцию, передающую элемент, вы можете просто сократить его следующим образом:
$('#myElement').click(ElementClicked);
function ElementClicked() {
$(this).addClass('clicked');
}
Обратите внимание, что функция передается в click()
как переменная, а не выполняется немедленно, потому что после нее нет скобок ()
.
И кстати, вы, вероятно, имеете в виду addClass
вместо addCss
.