2016-06-07 86 views
1

我試圖在點擊圖像後顯示帶有內容的div,但是當我的頁面被加載後,我嘗試點擊,則沒有任何反應。有趣的是,如果我的頁面正在加載不隱藏的內容,然後我會隱藏()和show()id控制檯後,它完美的作品。我究竟做錯了什麼?jQuery show()在hide()後不工作()

$(document).ready(function() { 
$('.content-flowers').hide() 

var first = $(".content-flowers").children()[0]; 
var second = $(".content-flowers").children()[1]; 
var third = $(".content-flowers").children()[2]; 

var firstImg = $(".flower-image")[0]; 
var secondImg = $(".flower-image")[1]; 
var thirdImg = $(".flower-image")[2]; 

$(firstImg).click(function(){ 
$(first).toggle(1000); 
}) 

/*$(".flower-image").click(function() { 
$('.content-flowers').show(1000); 
});*/ 

}); 

最新評論功能工作也不錯,但函數加載所有三個的div的內容,我想以點擊1張圖像後內容的第一個div將顯示

+7

發表一個[mcve]請 – j08691

+2

向我們顯示HTML,所以我們可以嘗試 –

回答

2

你說註釋版本的作用不同於它同時執行全部三個版本,但早期版本不起作用。

他們做了非常不同的事情。您未註釋掉的代碼看起來在孩子.content-flowers元素

var first = $(".content-flowers").children()[0]; 

但你註釋掉的版本適用於.content-flowers元素本身:

$('.content-flowers').show(1000); 

我懷疑它是.children()部分是使它失敗。我想你想:

var first = $(".content-flowers")[0]; 
// No .children() here ----------^ 

...作爲最小的變化。

這就是說,雖然,整個事情可以大大簡化:

$(document).ready(function() { 
    $('.content-flowers').hide() 

    // Get the flower images 
    var images = $(".flower-image"); 

    // When a flower image is clicked...  
    images.on("click", function() { 
     // Determine its index relative to the others... 
     var index = images.index(this); 

     // And show that content 
     $(".content-flowers").eq(index).toggle(1000); 
    }); 
}); 
+0

非常感謝你,它工作得很好,唯一的問題是,當作爲第一個圖像,我會點擊第二個圖像,然後它傳遞到左側容器的結果,因此div與第二個圖像的內容低於第一個圖像 – dante

+0

只是想知道,你不能在點擊函數中留下'var index',只是寫'this.toggle(1000)'? – Erik

+1

@Erik你不會反轉你點擊的東西 - 而是一個相同的索引相應的元素 –

-2

您已經在變量第一次採用了jQuery函數。所以請先嚐試一下。(1000)。刪除$符號。

+2

在另一個調用'$()'時包裝jQuery對象是浪費,它不會阻止它的工作。 –

+1

'first'不是jQuery對象,它是一個原始DOM元素:'var first = $(「。content-flowers」)。children()[0];' –