2015-12-29 67 views
2

我有一个<div>,它有不同的元素。.hide()子元素延迟隐藏

问题是,如果我触发jQuery的.hide(),父母<div>几乎立即隐藏(与它的背景色)和其他元素只是挂在“空气”,并有轻微的延迟消失,他们甚至有相互之间的延迟,像所有一行中无法隐藏的元素。

我已经搞砸了CSS几个小时,转换是相同的,我不能在jsFiddle中复制这个问题。

可能是什么问题?

<div class="map-marker-wrapper"> 
    <div class="map-marker-container"> 

     <div class="arrow-down"></div> 

     <img src="' . $marker_thumbnail . '" /> 

     <div class="content"> 
      <a href="' . $marker_permalink . '"> 
      <h5 class="title">' . $marker_title . '</h5> 
      </a>' . 
      $marker_price . ' 
      <div class="more-content"> 
       <span>' . $marker_size . ' </span> 
       <span> ' . $marker_price. ' </span> 
      </div> 
     </div> 

    </div> 
</div> 

removeMarkers(); 

//Remove map markers and marker cluster 
function removeMarkers() { 

    for(i = 0; i < newMarkers.length; i++) { 

     markers[i].setMap(null); 

     //Close infoboxes 
     if (markers[i].infobox.getVisible()) { 

      markers[i].infobox.hide(); 
     } 
    } 

    if (cluster) { 

     cluster.clearMarkers(); 
    } 

    markers = []; 
    newMarkers = []; 
    bounds = []; 
} 
+2

我建议你包括cs和js – guradio

+0

隐藏父元素会自动隐藏它的所有子元素。你必须有一个插件,导致你看到的奇怪的隐藏。 – Barmar

+1

如果您更改hide()以隐藏(1),您可以使用jQuery –

回答

0

markers[i].infobox.hide();更改为jQuery('.infoBox').hide();可消除此问题。

我不知道它是否有任何影响(性能或其他)但我想时间会告诉。

1

你可以尝试这样的

$( “格”).hide( “慢”);

和用于多个参考:

​​

0

使用

e.stopPropagation(); 

避免隐藏父元素

例如在JS小提琴:https://jsfiddle.net/t8Lnsux5/5/

$(".more-content").click(function(e){ 
e.stopPropagation(); 
    $(this).fadeOut('slow'); 
}); 

$(".content").click(function(e){ 
e.stopPropagation(); 
    $(this).fadeOut('slow'); 
});