简体   繁体   English

单击显示和隐藏div

[英]Show and hide divs on click

What am I doing wrong? 我究竟做错了什么? I am trying to show divs when the thumbnail is clicked. 我试图在点击缩略图时显示div。 I am able to show the first div, but for some reason, the next div is not showing. 我能够显示第一个div,但由于某种原因,下一个div没有显示。 I cannot figure out what I might be missing. 我无法弄清楚我可能会遗漏什么。

<script>
$(function(){
    $('.clickImage').click(function(){
        $('.popUp').hide();
        $('.popUp').eq($(this).index()).show();
    });
});
</script>

<style>
.popUp{
    display:none;
}
</style>

<div id="projectContainer">
        <div class="imageV clickImage"></div>
        <div class="textVertical">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tortor sit amet magna condimentum dapibus non quis nulla. Etiam varius pellentesque quam sed faucibus. Ut libero mi, porta ac tincidunt sagittis, porttitor a elit. In non tellus eu mauris tristique gravida. In rutrum arcu ullamcorper risus consequat interdum. Sed rutrum rhoncus dolor. Suspendisse potenti.</div>

        <div class="imageV clickImage"></div>
        <div class="textVertical">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tortor sit amet magna condimentum dapibus non quis nulla. Etiam varius pellentesque quam sed faucibus. Ut libero mi, porta ac tincidunt sagittis, porttitor a elit. In non tellus eu mauris tristique gravida. In rutrum arcu ullamcorper risus consequat interdum. Sed rutrum rhoncus dolor. Suspendisse potenti.</div>
</div>
<div>
    <div class="popUp">Enlarged Image 1</div>
    <div class="popUp">Enlarged Image 2</div>
</div>

Try including a selector in the .index() method: 尝试在.index()方法中包含一个选择器:

$(function(){
    $('.clickImage').click(function(){
        $('.popUp').hide();
        $('.popUp').eq($(this).index(".clickImage")).show();
    });
});

I don't think index() is doing what you are intending for it to do. 我不认为index()正在做你打算做的事情。

I would use a dataImageId attribute or something similar to uniquely identify the images. 我会使用dataImageId属性或类似的东西来唯一地识别图像。

your index is 2 as selected, use something like this: 您的索引是2,如下所示:使用以下内容:

$('.clickImage').click(function () {
       var i=$('.clickImage').index(this);
       $('.popUp').hide();
       $('.popUp').eq(i).show();
});

index is 0 based. index是基于0的。

Note that the first returns 0 as it is the first div, and 2 on the second as it is the third div, so you need to isolate to the divs with the .clickImage class 请注意,第一个返回0,因为它是第一个div,第二个返回2,因为它是第三个div,所以你需要使用.clickImage类隔离到div

Here is a simple fiddle to demonstrate: http://jsfiddle.net/zfZE2/ 这是一个简单的小提琴演示: http//jsfiddle.net/zfZE2/

Your first clickable clickImage will work because it will return index:0. 您的第一个可点击的clickImage将起作用,因为它将返回index:0.

Which is the right corresponding popup. 哪个是正确的相应弹出窗口。

But for the second clickImage it will return index:2, which does not have a corresponding popup. 但对于第二个clickImage ,它将返回index:2,它没有相应的弹出窗口。 Only 0 and 1 are present. 仅存在0和1。

This is because .textVertical is also seen as a sibling of clickImage , thus the 2nd clickImage you clikc will be the 3rd sibling (index). 这是因为.textVertical也被视为clickImage的兄弟,因此你clickImage的第二个clickImage将是第3个兄弟(索引)。

Change 更改

  $('.popUp').eq($(this).index()).show();

To

  $('.popUp').eq($(this).index('.clickImage')).show();

http://jsfiddle.net/rNSLE/ http://jsfiddle.net/rNSLE/

Try this way: 试试这种方式:

<script>
$(function(){
    $('.clickImage').click(function(){
        $('.popUp').hide();
    $(this).next().next().show();
    });
});
</script>

<style>
.popUp{
    display:none;
}
</style>

<div id="projectContainer">
        <div class="imageV clickImage"></div>
        <div class="textVertical">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tortor sit amet magna condimentum dapibus non quis nulla. Etiam varius pellentesque quam sed faucibus. Ut libero mi, porta ac tincidunt sagittis, porttitor a elit. In non tellus eu mauris tristique gravida. In rutrum arcu ullamcorper risus consequat interdum. Sed rutrum rhoncus dolor. Suspendisse potenti.</div>
    <div class="popUp">Enlarged Image 1</div>

        <div class="imageV clickImage"></div>
        <div class="textVertical">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tortor sit amet magna condimentum dapibus non quis nulla. Etiam varius pellentesque quam sed faucibus. Ut libero mi, porta ac tincidunt sagittis, porttitor a elit. In non tellus eu mauris tristique gravida. In rutrum arcu ullamcorper risus consequat interdum. Sed rutrum rhoncus dolor. Suspendisse potenti.</div>
    <div class="popUp">Enlarged Image 2</div>
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM