2017-02-11 35 views
0

我想要做的只是選擇,在這種情況下,徘徊,元素被視頻取代。現在,所有共享相同類的元素都會在其中一個元素被佔用時被替換。針對只使用jQuery的元素列表中的懸停元素

這裏是codepen

我已閱讀有關使用$(this),但我無法弄清楚如何在這裏實現它。

任何想法如何做到這一點?謝謝。

代碼在這裏還有:

HTML:

<div class="main-parent"> 
    <div class="img-container"> 
    <div class="video_overlays"> 
    <a href="http://dev.mintv.rs/sta-je-i-kako-se-pravi-zanatsko-pivo" target="_blank"> 
     <img src="http://dev.mintv.rs/wp-content/uploads/2017/02/1a-1.jpg" alt="Thumb" class="thumb_image" /> 
     <video class="thumbnail_player" src="http://dev.mintv.rs/wp-content/uploads/2017/02/Kabinet.mp4" type="video/mp4" autoplay loop></video> 
    </a> 
    </div> 
    <span class="duration">03:13</span> 
</div> 
<div class="desc"><p>Title</p></div> 
</div> 

<div class="main-parent"> 
    <div class="img-container"> 
    <div class="video_overlays"> 
    <a href="http://dev.mintv.rs/sta-je-i-kako-se-pravi-zanatsko-pivo" target="_blank"> 
     <img src="http://dev.mintv.rs/wp-content/uploads/2017/02/1a-1.jpg" alt="Thumb" class="thumb_image" /> 
     <video class="thumbnail_player" src="http://dev.mintv.rs/wp-content/uploads/2017/02/Kabinet.mp4" type="video/mp4" autoplay loop></video> 
    </a> 
    </div> 
    <span class="duration">03:13</span> 
</div> 
<div class="desc"><p>Title</p></div> 
</div> 

<div class="main-parent"> 
    <div class="img-container"> 
    <div class="video_overlays"> 
    <a href="http://dev.mintv.rs/sta-je-i-kako-se-pravi-zanatsko-pivo" target="_blank"> 
     <img src="http://dev.mintv.rs/wp-content/uploads/2017/02/1a-1.jpg" alt="Thumb" class="thumb_image" /> 
     <video class="thumbnail_player" src="http://dev.mintv.rs/wp-content/uploads/2017/02/Kabinet.mp4" type="video/mp4" autoplay loop></video> 
    </a> 
    </div> 
    <span class="duration">03:13</span> 
</div> 
<div class="desc"><p>Title</p></div> 
</div> 

CSS:

.main-parent { 
    width: 360px; 
} 

.img-container { 
    height: 202px; 
    width: 360px; 
    position: relative; 
} 

.video_overlays { 
    position: absolute; 
    width: 360px; 
    min-height: 100%; 
    background-color: rgba(15, 15, 15, 0); 
    z-index: 300000; 
} 

.video_overlays video { 
    display: none; 
} 

.duration { 
    z-index: 300001; 
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
    position: absolute; 
    right: 0; 
    bottom: 0; 
    padding: 0px 6px; 
    color: #fff; 
    font-size: 12px; 
    background-color: rgba(0, 0, 0, 0.66); 
    line-height: 24px; 
} 

.desc { 
    text-align: center; 
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
} 

JS:

jQuery('.img-container a').on({ 
    mouseenter: function() { 
    jQuery('.thumbnail_player').css("display", "block"); 
    jQuery('.thumbnail_player').attr("autoplay", "true"); 
    jQuery('.thumbnail_player').attr("loop", "true"); 
    jQuery('.thumb_image').css("display", "none"); 
    }, 

    mouseleave: function() { 
    jQuery('.thumbnail_player').css("display", "none"); 
    jQuery('.thumbnail_player').attr("autoplay", "false"); 
    jQuery('.thumbnail_player').attr("loop", "false"); 
    jQuery('.thumb_image').css("display", "block"); 
    } 
}); 
+2

添加',this'所有的選擇後 - >'的jQuery( 'thumbnail_player',此)'([jQuery的,選擇器上下文](https://api.jquery.com/jquery /#selector-context)) – Andreas

+0

或者使用jQuery(this).find('。thumbnail_player'); –

回答

1
jQuery('.img-container a').on({ 
    mouseenter: function() { 
    var $element = $(this).find('.thumbnail_player'); 
    var $image = $(this).find('.thumb_image'); 
    $element 
     .css("display", "block") 
     .attr("autoplay", "true") 
     .attr("loop", "true"); 
    $image.css("display", "none"); 
    }, 

    mouseleave: function() { 
    var $element = $(this).find('.thumbnail_player'); 
    var $image = $(this).find('.thumb_image'); 
    $element 
     .css("display", "none") 
     .attr("autoplay", "false") 
     .attr("loop", "false"); 
    $image.css("display", "block"); 
    } 
}); 
0

嘗試:

jQuery('.img-container a').on({ 
    mouseenter: function() { 
    jQuery('.thumbnail_player').css("display", "block"); 
    jQuery('.thumbnail_player').attr("autoplay", "true"); 
    jQuery('.thumbnail_player').attr("loop", "true"); 
    jQuery('.thumb_image',this).css("display", "none"); 
    }, 

    mouseleave: function() { 
    jQuery('.thumbnail_player').css("display", "none"); 
    jQuery('.thumbnail_player').attr("autoplay", "false"); 
    jQuery('.thumbnail_player').attr("loop", "false"); 
    jQuery('.thumb_image').css("display", "block"); 
    } 
}); 
+0

這是解決方案。謝謝。 jQuery('。img-container a')。jQuery('。img-container a')。(jQuery('。thumbnail_player',this).css(「display」,「block」); jQuery('。thumbnail_player ',this).attr(「autoplay」,「true」); jQuery('。thumbnail_player',this).attr(「loop」,「true」); jQuery('。thumb_image',this).css (「display」,「none」); }, mouseleave:function(){ ... } }); –

+0

@DarkoDemic爲什麼你將錯誤的答案標記爲「接受的答案」?現在唯一有效的答案是[thesublimeobject]中的一個(http://stackoverflow.com/a/42178031/402037) – Andreas

+0

沒有看到那個,是在我選擇了答案後發佈的。兩者都有效。 @thesublimeobject是完整的,所以我按照你的建議選擇那個作爲正確答案。 –