Я думаю, это потому, что ваша функция получает событие в качестве аргумента, и вам нужен event.target.
$('a.menu_filter_select').click(function(evt) {
var parent_filter = $(evt.target).closest('tr');
Я также рекомендую использовать closest
вместо parent
, так как ваш код будет работатьдаже если кто-то положит <b>
, <i>
или <span>
вокруг якоря.Я также использую find
вместо child
.
Редактировать: фактически, this
в FireFox ссылается на объект привязки, но я не могу точно знать, реализован ли он таким же образом в других браузерах, НО event.target может ссылаться на дочерний объект, если, скажем, документ выглядит следующим образом:
<a><b>some text</b> other text</a>
, тогда этот обработчик событий может выводить различные элементы:
$(a).click(function(event) { console.log(this, event.target); });
Попробуйте запустить этот код в FireBug, посмотрите, как он работает.