1

次のコードがあります (この場合は 2 つの画像の場合ですが、実際には、N 回複製される可能性があります。

<figure title="" class="DragBox" dragableBox="true" style="opacity: 1;" id="thumb_1">
   <span class="pic" id='UAJ754'>
      <span class="imagewrap">&nbsp;</span>
    <span class="overlay">
      <a href="fulldata.php?UAJ754" class="popUpSimple" rel="thumb_1">Image Information</a>
    </span>
    <img src="/pics/UAJ754.jpg" alt="">
  </span>

  <figcaption class="AlbumFig_Caption">A picture caption.
  </figcaption>
</figure>
<figure title="" class="DragBox" dragableBox="true" style="opacity: 1;" id="thumb_2">
   <span class="pic" id='JB6732'>
      <span class="imagewrap">&nbsp;</span>
    <span class="overlay">
      <a href="fulldata.php?JB6732" class="popUpSimple" rel="thumb_2">Image Information</a>
    </span>
    <img src="/pics/JB6732.jpg" alt="">
  </span>

  <figcaption class="AlbumFig_Caption">A second picture caption.
  </figcaption>
</figure>

現在、'pic' のクラスを持つスパンには jQuery の mousedown イベントが関連付けられているため、マウスがクリックされた画像に関係なく、pic タグがイベントをログに記録し、データを含むポップアップ ウィンドウを表示します。それはすべてうまくいきます。

しかし、マウスが押された特定の「写真」の ID タグを取得するか、ID を取得できるように IMG の src を取得する必要があります。これは、正しい情報を表示するためにポップアップ ウィンドウに渡す必要があるためです。右の写真のために。

次のJSコードがあります:

            $(".pic").mousedown(function(e) {   

                var mouseX = e.pageX; 
                var mouseY = e.pageY;

            if (e.which === 3) {                    

               $('.infobox').css({'top':mouseY+'px','left':mouseX+'px'}).fadeIn();

               var imgref = $(".pic").attr('id');
               alert (imgref);

               return false;
            }else{
               $('.info').fadeOut();
            }
        });

繰り返しますが、これは正常に機能しますが、クリックされた「pic」スパンに関係なく、最初の「pic」スパンの ID しか表示されません。現在の 'pic' スパンの ID フィールドを取得するにはどうすればよいですか? ユーザーがボタンを押したときにマウスが上にあったもの??

4

4 に答える 4

4

試す:

var imgref = $(this).attr('id');

また:

var imgref = $(this).prop('id');

それ以外の :

var imgref = $(".pic").attr('id');

$(".pic")picクリックしたクラスではないクラスを持つ最初のdivを提供します

于 2012-06-16T11:48:00.967 に答える
2
var imgref =this.id;

これもオブジェクトであり、$(this) はオブジェクトを別のオブジェクトにラップしているためです。

于 2012-06-16T11:52:28.737 に答える
1
var imgref = $('img', this).attr('src');

IMGのsrcを取得します。

于 2012-06-16T12:17:40.830 に答える
1

使用する代わりにvar imgref = $(".pic").attr('id');

これを使って:var imgref = $(this).attr('id');

于 2012-06-16T11:48:53.930 に答える