2016-01-21 78 views
1

我希望能够点击图像以显示/隐藏div(带文本)。我有这个工作的一个图像,但我有多个图像需要切换文本。通过点击图片显示/隐藏div

的JavaScript代码

$(document).ready(function() { 

    $(".slidingDiv").hide(); 
    $(".show_hide").show(); 

    $('.show_hide').click(function() { 
     $("slidingDiv").slideToggle(); 
    }); 

}); 

的HTML:

<a href="#" class="show_hide"><img src="image.jpg"></a> 
<div class="slidingDiv"> 
    <h2>Title</h2> 
    <p>text</p> 
</div> 

所以这个工作,但它仅适用于一个图像+ DIV。我想要第二个图像和div,但使用相同的slidingDiv类,然后单击第二个图像切换第二个div显然切换两个div。

那么我怎样才能得到两个图像来切换自己的div,而不是在点击两个图像之一的同时切换两个div?

+0

你缺少选择类型。 – Script47

回答

0

变化:

$("slidingDiv").slideToggle(); 

$(this).next(".slidingDiv").slideToggle(); 

jsFiddle example

$(".slidingDiv"),因为你注意到没有,选择具有slidingDiv类的所有元素。要选择slidingDiv类相对到您点击的元素,请使用this来引用正在单击的元素,然后.next(".slidingDiv")选择下一个元素,只要它具有slidingDiv类。

+1

谢谢,这工作! – user3210292

0

你忘了在$("slidingDiv").slideToggle();

添加"."您也可以使用此

JsFiddle Example

$(document).ready(function() { 
 

 
    $(".slidingDiv").hide(); 
 
    $(".show_hide").show(); 
 

 
    $('.show_hide').click(function() { 
 
      
 
     //$(".slidingDiv").slideToggle(); 
 
     var isvisible = $(this).next('.slidingDiv').is(':visible'); 
 
     
 
     if (isvisible) { 
 
      $(this).next('.slidingDiv').hide(); 
 
     } else{ 
 
      $(this).next('.slidingDiv').show(); 
 
     } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<a href="#" class="show_hide"><img src="image.jpg" alt="img"/></a> 
 
<div class="slidingDiv"> 
 
    <h2>Title</h2> 
 
    <p>text</p> 
 
</div>

0

试试这个:

$('.show_hide').click(function(e) { 
     $(e.target).parent().next('.slidingDiv').slideToggle(); 
    }); 
}); 

e.target与给你click event

+0

但这不是他想要切换的元素。 – j08691

+0

@ j08691现在怎么样? – ambes

+0

为什么你不测试它,看看? – j08691

0

裹在源DOM元素在同一个DIV,做下一个步骤:

  1. 发现图像与.parent()
  2. 寻父父的.slidingDiv与.find()
  3. 隐藏/显示与.slideToggle的.slidingDiv()

$(document).ready(function() { 
 

 
    $(".slidingDiv").hide(); 
 
    $(".show_hide").show(); 
 

 
    $('.show_hide').click(function() { 
 
     $(this).parent().find(".slidingDiv").slideToggle(); 
 
    }); 
 

 
});
.fleft{ 
 
    float: left; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="fleft"> <!-- This is the parent div --> 
 
    <a href="#" class="show_hide"><img style="width:100px;height:100px" src="http://www.online-image-editor.com//styles/2014/images/example_image.png"></a> 
 
    <div class="slidingDiv"> 
 
    <h2>Title</h2> 
 
    <p>text</p> 
 
    </div> 
 
</div> 
 
<div class="fleft"> <!-- This is the parent div --> 
 
    <a href="#" class="show_hide"><img style="width:100px;height:100px" src="http://www.online-image-editor.com//styles/2014/images/example_image.png"></a> 
 
    <div class="slidingDiv"> 
 
    <h2>Title</h2> 
 
    <p>text</p> 
 
    </div> 
 
</div> 
 
<div class="fleft"> <!-- This is the parent div --> 
 
    <a href="#" class="show_hide"><img style="width:100px;height:100px" src="http://www.online-image-editor.com//styles/2014/images/example_image.png"></a> 
 
    <div class="slidingDiv"> 
 
    <h2>Title</h2> 
 
    <p>text</p> 
 
    </div> 
 
</div>

+0

如何在切换文本时将div放在一起而不移动它们?因为当我在两者上使用'float:left'时,这就是发生的事情。 – user3210292

+0

我更改了代码以回答您的评论。 ''float:left'在父div上,而不是在slidingDiv中。那是你需要的吗? – kpucha

+0

这就是我已经尝试过的,它们的位置彼此相邻,但是当我点击第一张图片时,第二张图片会移至第一张图片的下方。 – user3210292

相关问题