2011-09-16 106 views
1

我下面舉個例子:http://jsfiddle.net/LAMdV/

HTML:

<div id="imageSlider"> 
    <span class="info" id="info1"> 
     hello world 
    </span> 
</div> 

的jQuery:

$('#imageSlider .info').click(function() { 
    var i = $(this).attr('id'); 
    i = i.replace('info', ''); 

    if ($('#imageSliders .info#info' + i).is(':visible')) {  
     alert("hide"); 
    } else { 
     alert("show"); 
    } 
}); 

爲什麼is:visible的結果總是顯示錯誤?儘管它從一開始就是可見的! (在我的實際情況下,它先前隱藏,然後顯示)

+1

@Ates Goral給了你答案。但是,不需要執行$('#imageSliders .info#info'+ i)',因爲ID必須是唯一的。所以,執行'$('#info'+ i)''''''''''''''''''''''''''''''''''更乾淨更快捷,儘管你不需要它,因爲'$(this)'已經是你正在尋找的元素。 – Shef

+0

謝謝大家,想想星期五下午布魯斯正在設置,可以告訴它是一個星期結束!我會在一分鐘內將它標記爲答案,但現在還不能。感謝您的其他建議Shef :) – Chris

回答

5

當您的選擇器使用「#imageSliders」(複數)時,您的標記有id「imageSlider」。

2

這可能是因爲id是imageSlider,而你的jQuery有#imageSliders(複數)。

1

你有混淆你的語法。

if ($('#imageSliders .info#info' + i).is(':visible')) { ... } 

在ids之後引用類名。但是IDS是最快的選擇使剛剛得到的信息{數}作爲首要選擇

if ($('#info' + i).is(':visible')) { ... } 

但是因爲這是一個函數調用,你可以只使用this

if ($(this).is(':visible')) { ... } 

爲了進一步您,當解釋會使用類與ID結合。以一個頁面上的id爲例,可以用活動類來修飾它。

$("#uniqueid") 

VS

$("#uniqueid.active") 
0

這既不是他們的。 imageSliders應該是imageSlider