3

我有一个来自 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'

谢谢!

4

3 回答 3

8

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

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

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

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

于 2009-02-11T17:53:21.733 回答
1

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

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

但是同上之前的海报所说的,你应该能够只使用 $(this) 来获得你想要的东西。

于 2009-02-11T22:48:49.913 回答
0
$(...selectquery...). .click(function(event) { var $tgt = $(event.target); 

$(this).parent().css("...") should work as well
于 2009-02-11T17:44:35.093 回答