this
- это «Объект, для которого была вызвана эта функция», поэтому для foo.test()
, this
- это foo
внутри test
. Если вы не укажете объект, по умолчанию он будет window
, поэтому в вашем коде this === window
, поскольку вы вызываете (неявно) window.test()
.
Забудьте о внутренних атрибутах событий. Они безобразны и не поддаются ненавязчивому JavaScript .
Вместо этого используйте JavaScript для назначения обработчиков событий. jQuery, который вы уже используете, предоставляет несколько способов сделать это, включая click
. В качестве аргумента передайте функцию, которую вы хотите вызвать.
jQuery('.link').click(test);
Когда срабатывает событие click, теперь оно будет вызывать что-то похожее на HTMLElementNode.test()
вместо HTMLElementNode.onclick()
, поэтому this
будет тем, что вы хотите.