Ошибка JQuery event.target - PullRequest
       17

Ошибка JQuery event.target

3 голосов
/ 11 февраля 2009

У меня есть ящик от div (price_item) с несколькими дочерними div (дата, цена и т. Д.). Я использую это как карусель для показа цен. Если нажать на любого ребенка, цвет фона родителя должен быть изменен на красный. Я написал это как:

$(...selectquery...).click(function() {
    var $tgt = $(event.target);
    $tgt.parent().css("backgroundColor", "red");
});

в Chrome, event.target работает как положено, в Firefox 3.0.1 написано «событие не определено». Как я могу обойти это?

Я пробовал следующее:

$(this).parent().css()

сказано 'object is not a function'

спасибо!

Ответы [ 3 ]

8 голосов
/ 11 февраля 2009

Объект event передается в ваш обработчик кликов с помощью jQuery, поэтому вам нужно указать его в качестве параметра.

Вы также можете добавить обработчик кликов к родительскому объекту и использовать «$ (this)» вместо event.target:

$(...select the parent...).click(function() {
    $(this).css("backgroundColor", "red");
});

Если пользователь щелкает по родительскому элементу или любому из его дочерних элементов, он вызывает ваш обработчик щелчков. Если вам нужно изменить фон, только если они действительно щелкают по одному из дочерних элементов (например, не между ними), это не сработает.

1 голос
/ 12 февраля 2009

Если вы хотите что-то сделать с событиями, убедитесь, что вы передали событие в качестве аргумента функции обработки:

$('#foo').click(function(event) {
  // ...
});

Но, как сказал предыдущий автор, вы можете просто использовать $ (this), чтобы получить то, что вы хотите.

0 голосов
/ 11 февраля 2009
$(...selectquery...). .click(function(event) { var $tgt = $(event.target); 

$(this).parent().css("...") should work as well
...