JQuery event.target错误

时间:2009-02-11 17:25:37

标签: javascript jquery event-handling jquery-1.3

我有一个来自divs(price_item)的盒子,里面有几个子div(日期,价格等)。我用它作为显示价格的caroussel。如果单击任何子项,则父项的背景颜色必须更改为红色。我写得像:

$(...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 个答案:

答案 0 :(得分:8)

jQuery会将event对象传递给您的点击处理程序,因此您需要将其指定为参数。

您也可以将点击处理程序添加到父对象并使用“$(this)”而不是event.target:

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

如果用户单击父项或其任何子项,它将调用您的单击处理程序。如果你只需要改变背景,如果他们实际点击其中一个孩子(例如,不在他们之间),这将不起作用。

答案 1 :(得分:1)

如果您想对事件做任何事情,请确保将事件作为参数传递给处理函数:

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

但是同样早先的海报所说的,你应该只能用$(this)来得到你想要的东西。

答案 2 :(得分:0)

$(...selectquery...). .click(function(event) { var $tgt = $(event.target); 

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