2012-04-30 18 views
1

ここからフォトスライダーコードを使用しています:http://tympanus.net/codrops/2010/10/07/slider-gallery/画像の下のリンクが新しいウィンドウに読み込まれるように修正しようとしています。私は現在、読み込みのJavaScriptファイルと異なるものの多様性を試してみたjQuery - 特定の子供以外のクラスを選択

<div class="content"> 
<div><a href="#"><img src="http://imageurl" alt="largeimageurl" /></a></div> 
<div class="caption"><a target="_blank" href="image.php?id=someid&svc=somesvc" rel="nofollow">More Info</a></div> 
</div> 

:たとえば

私がする必要がどのような
$fp_content_wrapper.find('.content').bind('click',function(e){ 
    var $current = $(this); 
    //track the current one 
    current = $current.index(); 
    //center and show this image 
    //the second parameter set to true means we want to 
    //display the picture after the image is centered on the screen 
    centerImage($current,true,600); 
    e.preventDefault(); 
    }); 

あるので、最初の行を変更しますこれは通常どおりに選択されますが、リンクがあるキャプションdivには何も適用されないため、通常と同じように動作します。

私はSOに類似の質問があることを知っていますが、私は提案されたもののほとんどを試しました。私はJSをあまり経験していないので、間違ってやってしまうことがあります。

ありがとうございました!

+1

あなたのキャプションdivは何ですか?あなたがidを意味するならば、 '$ fp_content_wrapper.find( 'content')を実行することはできません( '#caption')。bind( 'click'、function(e){'それがクラスの場合 –

+0

コードは最初のコードブロックにあり、content div内にネストされています。これ以外にキャプションdivを配置しようとしましたが、スタイリングでより多くの作業が発生します。 –

+0

あなたは大丈夫です、どうして私はこれを見ませんでしたか? –

答えて

1

このお試しください:何が​​起こっているか

$fp_content_wrapper.find('.content>*:not(.caption)').bind('click',function(e) ..... 

はあなたが.csptionクラスを使って何を除き、その中にあったものを選択したかった代わりに、コンテンツのタグを選択したということです。 '>'はすぐ下の要素を意味し、 '*'はすべてを選択することを意味します。つまり、「.captionのクラスではないコンテンツを直接選択してください」ということになります。

jqueryを引き続き使用する場合は、セレクタを調べてみる価値があります。

幸運

+0

ブリリアントの(class!= 'caption'){code}の場合は、(今朝はシステムが動作しないときにシステムをデモンストレーションしなければならなかったので、恥ずかしく思っていた: - /) 確かに答えを感謝します、それは私がこれの将来の実装で使用できる何かです。再度、感謝します! 改造を少し説明して、意味が分かりますか? –

+0

私はあなたのために説明を入れました – MrJD

+0

ありがとう、私はそれを今より多く理解しています。 –

1

試してみてください。

$fp_content_wrapper.find('.content:not(.caption)').bind("click", ... 
+0

これを試しましたが、残念ながらキャプションのリンクには影響しませんでした。両方ともまだ画像のより大きなバージョンを起動します。 –

0

があり、これを行うために滑らかな印象の方法があるが、これが何をすべきこのジェームズ

$fp_content_wrapper.find('.content').bind('click',function(e){  
    if(!$(this).attr('class')) 
    { 
    var $current = $(this);  
    //track the current one  
    current = $current.index();  
    //center and show this image  
    //the second parameter set to true means we want to  
    //display the picture after the image is centered on the screen  
    centerImage($current,true,600);  
    e.preventDefault(); 
    } 
}); 

を試してみてください。これにより、クラスを持たないdivだけが関数を実行するようにする必要があります。他のdivのクラスを使用する場合は、注意してください。

乾杯

EDIT:

再びあなたにもそれがalt属性または何alt属性があるがあるかどうかをチェックするためのdivの中のハイパーリンクをテストすることができ、あなたのコードを見ているの後。これはより具体的なテストになります。

+0

ありがとうございます - 残念ながらまだ動作していません。私は、関数が内部のdiv(クラスなしのもの)ではなく、メインのcontent divに適用する必要があると思います。 クラスが「キャプション」と等しいかどうかを確認するために、これに似たコードは何ですか? 擬似コード –

関連する問題