Jquery - 打开.next

时间:2017-12-18 15:22:29

标签: javascript jquery html

我正在尝试创建一个只打开下一个名为.video-overlay的div的脚本。 我不想使用ID,因为每页最多可以有30个视频。

JS小提琴:https://jsfiddle.net/w2fqrzbw/

目前剧本正在影响两个......是否有一种方法可以定位名为.video-overlay的下一个div?

HTML:

<span class="video-trigger">Button 1 </span>
<!-- Close video trigger-->

<div class="video-overlay">
    <div class="overlay-close">Close</div>
    <div class="container">
      Popup 1
    </div>
</div>
<!-- Close video popup-->


<br><br/>
<br><br/>
<br><br/>



<span class="video-trigger">Button 2</span>
<!-- Close video trigger-->

<div class="video-overlay">
    <div class="overlay-close">Close</div>
    <div class="container">
      Popup 2
    </div>
</div>
<!-- Close video popup-->

JS:

//Video popup
    $(document).ready(function() {
        $('.video-trigger').click(function() {
            $('.video-overlay').fadeIn(300);
            $('.video-overlay video').get(0).play();

        });
        $('.video-overlay .overlay-close').click(function() {
            $('.video-overlay').fadeOut(300);
            $('.video-overlay video').get(0).pause();
        });
    });

这是我在实际网络文档中的布局:

<div class="col span_6_of_12 ripple-me">
                            <div class="video-thumbnail" style="background-image: url(<?php echo $video_thumbnail; ?>);">
                                <span class="video-trigger">
                                </span>
                            </div>
                            <!--Close Video box cta -->

                            <div class="video-overlay">
                                <div class="overlay-close">Close</div>
                                <div class="container">
                                    <iframe allowFullScreen='allowFullScreen' src="<?php echo $video_link; ?>" width="960" height="370" allowtransparency="true" style='position:absolute;top:0;left:0;width:100%;height:100%;' frameborder="0"></iframe>
                                </div>
                            </div>
                            <!-- Close video popup-->

                        </div>

3 个答案:

答案 0 :(得分:0)

您当前逻辑的问题在于它会影响点击中的所有$('.attendees').on('change', function(){ $value = Math.max(0, Number(this.value) - 1); $('div[class*="guest-"]').hide().slice(0, $value).show(); }); 元素。要解决此问题,您可以使用DOM遍历来仅使用.video-overlay.video-trigger查找与所点击的next()相关的一个。试试这个:

closest()

答案 1 :(得分:0)

尝试使用JQuery Next Function

//Video popup
$(document).ready(function() {
    $('.video-trigger').click(function() {
        var $videoOverlay = $(this).next('.video-overlay');
        videoOverlay.fadeIn(300);
        videoOverlay.find('video').get(0).play();

    });
});

答案 2 :(得分:0)

jQuery提供了强大的DOM遍历工具。一定要使用它们

//Video popup
$(document).ready(function() {
  $('.video-trigger').click(function() {
    $(this).parent().next('.video-overlay').fadeIn(300);
    $('.video-overlay video').get(0).play();

  });
  $('.video-overlay .overlay-close').click(function() {
    $(this).parent().fadeOut(300);
    $('.video-overlay video').get(0).pause();
  });
});