私はjqueryを初めて使用しています。jqueryの親関数から属性値を取得する
私は約10の小さなサムネイルスタイルの画像で構成された「ヘッダーバー」を持っています。これらの画像をクリックすると、より大きなバージョンを表示するために大きなサイドバー画像が変更されます。
いくつかについていじって、私はイメージのため、次のコード使用して管理するように見えた、:私は、その後の下部にあるいくつかのjqueryのコードを追加し
<img src="header_images\small1.jpg" alt="alttext" class="hdrimage" id="1" data-bigimage="big1.jpg" />
<img src="header_images\thumb2.jpg" alt="alttext" class="hdrimage" id="2" data-bigimage="bigger2.jpg" />
などを...ページ:
$(".hdrimage").bind('click', function() {
$("#swappyimage").attr("src", "header_images/"+$(this).attr("data-bigimage"));
})
これが最善の方法であるかどうかはわかりませんが、うまくいくようです。
古いイメージをフェードアウトして新しいイメージをフェードインするのはいいと思ったので、.fadeOut( "slow")を追加しました。 clickイベントには適用されますが、テストではフェードが完了してからイメージがスワップされるまで待機しません。 Googleに おかげで、私はこれを達成するために.fadeOutにコールバック関数を使用する必要が発見されたので、私が何かしようとしたん:
$(".hdrimage").bind('click', function() {
$("#swappyimage").fadeOut('slow', function() {
$("#swappyimage").attr("src", "header_images/"+$(this).attr("data-bigimage"));
})
})
をしかし、これはもはや機能します。 $(これ)がクリックされた.hdrimageではなく#swappyimageを参照しているからです。私はサムネイル(.hdrimage)から必要な属性を参照する方法を理解することができません。そのサムネイルをクリックして全体をトリガーするので、助けていただければ幸いです。
私はそれを十分に説明したかったと思います!
私は間違っている可能性がありますが、コールバックパラメータから 'clickEvent'を削除する必要があると思います。コールバックはパラメータを必要とせず、問題が発生するでしょうか? –
@kingjivあなたが正しいです:(http://jsfiddle.net/StuperUser/XB83Q/)、更新された答え。これはあなたのものに似ていますが、変数はクリックハンドラ関数のパラメータです。 – StuperUser
はい!それはあなたに感謝しました。さて、私は一度fadeInを追加することを思い出しました! (それはしばらく私を困らせた!!) – Stevemid