2012-10-11 107 views
0

我想要做的是在点击提交按钮时更改父元素的背景颜色。如何使用jQuery更改父元素的背景颜色?

所以对我也曾经尝试这样的代码:

  $("input.submit").click(function(){ 
       var className = $(this).parent().attr("class"); 
       $(className).animate({backgroundColor: '#FFB95E'}, 1000); 
       $(className).animate({borderColor: '#C97200'}, 1000); 
      }); 

但我永远无法得到的父元素的类名。有几个提交按钮都有不同的父元素,这就是为什么我需要这样做。

任何人都可以请帮忙吗?

非常感谢

彼得

+0

提交按钮上的点击事件有点不稳定。尝试调用表单提交功能,而不是... – MassivePenguin

回答

1

您的标记将有助于解决这个问题的一个例子,但你似乎可以用正确的代码来获得父元素。

我会建议你使用像萤火虫调试器,看看有什么$(this).parent()[0]是或只是alert($(this).parent()[0]);如果它不返回"object"你知道你没有一个父元素,如果你有一个父元素使用alert($(this).parent()[0].outerHTML);怎么看如果你有正确的元素。

最后$(className)是多余的,没有任何作用,只是像下面的getter那样链接elemnt命令,或者直接使用变量,它已经是一个jQuery对象。

$(this).parent().animate({backgroundColor: '#FFB95E'}, 1000).animate({borderColor: '#C97200'}, 1000); 
+0

当我使用alert($(this).parent()[0]它说它的undefined。但是有一个父类的名称为“timer”的父元素? –

+0

尝试使用'$(this).parents (“:first”)[0]'注意到's'会导航到DOM,并且检查你的上下文中的'this'对象是否是你认为的元素。 – DeMeNteD

0

为什么不干脆

$(this).parent() 
     .animate({backgroundColor: '#FFB95E', 
       borderColor: '#C97200'}, 1000); 

你不需要获得类的父的设置背景颜色。但是,如果我上的颜色默认情况下不工作,不误有生你需要一些插件来处理过渡

+0

我会给出一个去,动画功能是一个插件。感谢:) –

相关问题