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透明)
展开
 我来答
zhfto
推荐于2017-11-28 · TA获得超过563个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:214万
展开全部

  你的代码里,用了两个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>

  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式