2016-07-22 54 views
1

我在頁面上有9個方格,當你點擊一個正方形時,我想要一個完整寬度的div出現在它的下方,並將方框向下推。Expand div/div divs push div divs down the page

我一直在試圖按照教程瞭解這背後的JS,但我無法得到它的工作。

Codepen: http://codepen.io/SaraTez/pen/QEmPjX

<ul class="grid-list"> 
    <li class="li">One</li> 
    <li class="li">Two</li> 
    <li class="li">Three</li> 
    <li class="li">Four</li> 
    <li class="li">Five</li> 
    <li class="li">Six</li> 
    <li class="li">Seven</li> 
    <li class="li">Eight</li> 
    <li class="li">Nine</li> 
    <li class="li">Ten</li> 
    </ul> 

JS

$(".grid-list .li").click(function(){ 
var .li=$(this); 

if ($(this).hasClass("active")) { 
    $(".grid-list .li.cloned-expand").remove(); 
    $(".grid-list .li").removeClass("active"); 
} 
else { 
    $(".grid-list .li.cloned-expand").remove(); 
    $(".grid-list .li").removeClass("active"); 
    var cloned=.li.clone().addClass("cloned-expand").append("<span class='cloned-expand-close'>X</span>"); 
    .li.addClass("active").after(cloned); 
    $('html, body').animate({ 
     scrollTop: $(this).offset().top 
    }, 400); 
} 
}); 

$(document).on("click", ".cloned-expand-close", function(){ 
    $(".grid-list .li.cloned-expand").remove(); 
    $(".grid-list .li").removeClass("active"); 
}); 

的框顯示,因爲他們應該,但沒有功能上發生的點擊,所以我認爲這是一個JS問題/語法與我的HTML 。

任何人都可以幫助解決這個問題嗎?或者,如果您已經看到我最終希望實現的任何良好示例,那將是好的

回答

3

由於您錯誤地定義了您的變量,因此無法正常工作。

定義是這樣的:

var li=$(this); 

$(".grid-list .li").click(function(){ 
 
     var li=$(this); 
 

 
     if ($(this).hasClass("active")) { 
 
      $(".grid-list .li.cloned-expand").remove(); 
 
      $(".grid-list .li").removeClass("active"); 
 
     } 
 
     else { 
 
      $(".grid-list .li.cloned-expand").remove(); 
 
      $(".grid-list .li").removeClass("active"); 
 
      var cloned=li.clone().addClass("cloned-expand").append("<span class='cloned-expand-close'>X</span>"); 
 
      li.addClass("active").after(cloned); 
 
      $('html, body').animate({ 
 
       scrollTop: $(this).offset().top 
 
      }, 400); 
 
     } 
 
    }); 
 

 
    $(document).on("click", ".cloned-expand-close", function(){ 
 
     $(".grid-list .li.cloned-expand").remove(); 
 
     $(".grid-list .li").removeClass("active"); 
 
    });
* { 
 
    box-sizing: border-box; 
 
} 
 
    .li { 
 
    display: inline-block; 
 
    width: 15%; 
 
    height: 100px; 
 
    line-height: 100px; 
 
    border: 1px solid; 
 
    margin: 0 1% 10px 0; 
 
    text-align: center; 
 
    position: relative; 
 
    cursor: pointer; 
 
    &:hover { 
 
     background-color: #eee; 
 
    } 
 
    .li:active { 
 
     background-color: #eee; 
 
     &:after { 
 
      content: ''; 
 
      height: 0; 
 
      width: 0; 
 
      border-left: 10px solid transparent; 
 
      border-right: 10px solid transparent; 
 
      border-top: 10px solid #000; 
 
      position: absolute; 
 
      bottom: -10px; 
 
      left: 50%; 
 
      margin-left: -5px; 
 
     } 
 
     } 
 
    } 
 
    .cloned-expand{ 
 
     display: block; 
 
     float: left; 
 
     min-height: 80px; 
 
     width: 97%; 
 
     margin: 0 0 10px; 
 
     padding: 10px 30px; 
 
     -webkit-animation: fadeinLoad .5s forwards; 
 
     -moz-animation: fadeinLoad .5s forwards; 
 
     animation: fadeinLoad .5s forwards; 
 
     &-close { 
 
     position: absolute; 
 
     right: -1px; 
 
     top: -1px; 
 
     height: 20px; 
 
     width: 20px; 
 
     line-height: 20px; 
 
     border: 1px solid; 
 
     text-align: center;   
 
     cursor: pointer; 
 
    } 
 
    } 
 
} 
 
@-webkit-keyframes fadeinLoad { 
 
    from { opacity: 0;} 
 
    to { opacity: 1; } 
 
} 
 
@-moz-keyframes fadeinLoad { 
 
    from { opacity: 0; -moz-transform: translate(0, -20px); } 
 
    to { opacity: 1; -moz-transform: translate(0, 0); } 
 
} 
 
@keyframes fadeinLoad { 
 
    from { opacity: 0; transform: translate(0, -20px); } 
 
    to { opacity: 1; transform: translate(0, 0); } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="grid-list"> 
 
    <li class="li">One</li> 
 
    <li class="li">Two</li> 
 
    <li class="li">Three</li> 
 
    <li class="li">Four</li> 
 
    <li class="li">Five</li> 
 
    <li class="li">Six</li> 
 
    <li class="li">Seven</li> 
 
    <li class="li">Eight</li> 
 
    <li class="li">Nine</li> 
 
    <li class="li">Ten</li> 
 
    </ul>

這裏是jsFiddle

希望它能幫助:)

+0

這並感謝你 - 不要吝嗇在評論中開始一個新問題,但很容易停下來它是從克隆數字並在div中放入不同的內容? – user3005003

+0

就像你想改變李元素裏面的文字,對吧? – Thinker

+0

最終我想廣場是圖像,然後看起來像包含一些文本的div – user3005003