2013-03-06 37 views
0

我一直在嘗試一切,閱讀無處不在,似乎無法得到它的工作。到底我是什麼做錯了......檢查div可見性不顯示在jQuery中

var visibility = $('#short-link').css('visibility'); 
$('#share-link span').click(function() { 
    if (visibility != 'hidden'){ 
     $('#short-link').css({visibility: 'visible'}); 
    } else { 
     $('#short-link').css({visibility: 'hidden'}) 
    } 
}); 

請幫

+0

你有seent這個問題的http://stackoverflow.com/questions/178325/testing-if-something-是否隱藏與jquery – 2013-03-06 01:00:28

+0

你不需要像這樣'$('#short-link').css({'visibility':'visible'});'?單引號的可見性。 – SRy 2013-03-06 01:04:50

回答

1

我想這是你期待,因爲你定義之外知名度你的功能不行爲,所以它永遠不會改變。我想你打算寫:

$('#share-link span').click(function() { 
    var visibility = $('#short-link').css('visibility'); 
    if (visibility != 'hidden'){ 
     $('#short-link').css({visibility: 'visible'}); 
    } else { 
     $('#short-link').css({visibility: 'hidden'}) 
    } 
}); 

或更高,緩存的對象,但不是財產:

var $shortLink = $('#short-link'); 
$('#share-link span').click(function() { 
    var visibility = $shortLink.css('visibility'); 
    if (visibility != 'hidden'){ 
     $shortLink.css({visibility: 'visible'}); 
    } else { 
     $shortLink.css({visibility: 'hidden'}) 
    } 
}); 
+0

謝謝,不要爲什麼我沒有抓住這個。 – souporserious 2013-03-06 04:09:34

0

你正在檢查的知名度事件處理程序之外,因此它不會真的自己改變。

除了大衛的回答,如果你只是想切換元素的可見性,.toggle可能的工作:

$('#share-link span').click(function() { 
    $('#short-link').toggle(); 
}); 

你的方法之間的區別,這一次是display: none和原來的之間.toggle()切換display值而不是更改visibility屬性。

1

我建議:

$('#share-link span').click(function() { 
    this.style.visibility = this.style.visibility == 'visible' ? 'hidden' : 'visible'; 
}); 

這避免了使用jQuery的方法來更新節點的內嵌樣式,並避免設置不必要的變量(然後必須更新能見度的變化)。

從你的說法看來,這似乎更好,我還沒有搞錯純JS,只是jQuery。所以,而不是「這個」,我不會使用#短鏈接?我是否使它成爲JavaScript對象?

如果你寧願留在一個更jQuery的做法,那麼我建議:

$('#share-link span').click(function() { 
    $(this).css('visibility', function(i,v){ 
     return v == 'visible' ? 'hidden' : 'visible'; 
    }); 
}); 

假設,當然,它的span要採取行動。

+0

從你的說法來看,這似乎更好,我還沒有搞錯純JS,只是jQuery。所以,而不是「這個」,我不會使用#短鏈接?我是否使它成爲JavaScript對象?感謝你的幫助。 – souporserious 2013-03-06 04:11:34

0

我猜你是在可視性缺失報價

$('#short-link').css('visibility','visible'); 

$('#short-link').css({'visibility':'visible'}); 
+0

您錯過了{}。另外,當你說得對,這可能會導致一些瀏覽器(舊IE版本,我相信)的問題,我不認爲這是問題在這裏。 – Dave 2013-03-06 01:12:48

+0

我的錯誤;只是檢查了文檔,你的版本沒問題。我仍然認爲這不是問題! – Dave 2013-03-06 01:13:41

+0

我不確定是什麼錯誤。但是當我看到代碼的時候,我會引用引號。如果我們看到腳本中使用的那些'ID' OP的'HTML',我們就可以看出來。 – SRy 2013-03-06 01:26:17