2011-09-16 2 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の結果は常にfalseを示していますか?事実にもかかわらず、最初から目に見えます! (私の実際のシナリオでは以前は隠して表示していました)

+1

@Ates Goralはあなたに答えを与えました。しかし、IDは一意でなければならないので、 '$( '#imageSliders .info#info' + i)'を実行する必要はありません。だから、$( '#info' + i) 'を実行する方がはるかにクリーンで速くなりますが、' $(this) 'はすでにあなたが探している要素であるため、必要ないでしょう。 – Shef

+0

ありがとう、金曜日の午後のブルースは、それが週の終わりだと言うことができる設定されていると思う!私はそれを答えとしてマークしますが、今はできません。あなたの他のアドバイスをありがとうShef :) – Chris

答えて

5

あなたのマークアップには "imageSlider"というIDがあり、セレクタには "#imageSliders"(複数)が使用されています。

2

idがimageSliderで、jQueryに#imageSliders(複数)がある可能性があります。

1

構文が混ざっています。

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

idsの後にクラス名が参照されます。しかしIDは、これが機能しているので、これだけが主セレクタとして

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

を見る{番号}を得る最速のセレクタですあなただけのときにさらに説明するためにthis

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

を使用することができます呼び出しますidと組み合わされたクラスを使用します。ページ上のIDが、そのクラスがアクティブであると飾ることができる例を考えてみましょう。

$("#uniqueid.active") 
0

$("#uniqueid") 

それは彼らのでもありません。 imageSlidersはimageSliderである必要があります