jquery设置透明度的问题
我想要实现的效果是这样的,这个.hide_this的元素点一下,变成透明的,然后再点一下,又变成不透明的,$('.hide_this').click(function()...
我想要实现的效果是这样的,
这个.hide_this的元素点一下,变成透明的,然后再点一下,又变成不透明的,
$('.hide_this').click(function(){
$(this).parents('.m_box').animate({opacity:'0.3'},2000, function(){
$(this).parents('.m_box').animate({opacity:'1'},2000)
})
我这样写的,设置透明的效果实现了,然后变不回来了,请高手帮忙改一下
(点一下<a class="hide_this">,父元素.m_box透明) 展开
这个.hide_this的元素点一下,变成透明的,然后再点一下,又变成不透明的,
$('.hide_this').click(function(){
$(this).parents('.m_box').animate({opacity:'0.3'},2000, function(){
$(this).parents('.m_box').animate({opacity:'1'},2000)
})
我这样写的,设置透明的效果实现了,然后变不回来了,请高手帮忙改一下
(点一下<a class="hide_this">,父元素.m_box透明) 展开
1个回答
展开全部
你的代码里,用了两个this,但是这两个this所代表的对象是不同的。
第一个this,是在class为".hide_this"的HTML控件的click事件方法里,代表的是$("hide_this")所筛选到的HTML控件对象;
而另一个this是在$(this).parents('.m_box')的animate方法的回调函数里,这个this代表的则是$(this).parents('.m_box')所筛选到的HTML控件对象,你再在animate的回调函数里用.$(this).parents('.m_box')去筛选其父层的class为".m_box"的控件,即便找到了,也不是现在这个已经变透明的控件。
按照你的现在的实现逻辑,你的代码修改成下面这个样子就可以了:
$('.hide_this').click(function(){
var source = this;
$(source).parents('.m_box').animate({opacity:'0.3'},2000, function(){
$(source).parents('.m_box').animate({opacity:'1'},2000)
})
另外可以更简单一些来处理:
$('.hide_this').click(function(){
$(this).parents('.m_box').animate({opacity:'0.3'},2000, function(){
$(this).animate({opacity:'1'},2000)
})
对于this关键字,在什么时候,什么地方会代表什么对象,你自己应该尽量多熟悉一下。
下面是我自己测试的代码:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script language="javascript">
$(document).ready(function(){
$("#opCmd").click(function(){
$(this).parent("div").animate({opacity:'0.3'},2000,function(){
$(this).animate({opacity:'1'},2000)
});
});
});
</script>
</head>
<body >
<div id="div1" style="width:200px;height:300px;background-color:red">
<button id="opCmd">设置透明</button>
</div>
</body>
</html>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询