web-dev-qa-db-ja.com

壮大なポップアップ:コールバックで現在の要素を取得

Magnific Popupで、クリックされたリンクの属性を取得し、それをコールバック関数(callbacks:openを使用)で使用して、DOMにいくつかの変更を加えたいと思います。

これどうやってするの?たとえば、以下のコードでは、コンソールに「動作する」を返す必要があります。代わりに、「機能しません」と出力します。助けてください!!

<a href="#test-popup" class="open-popup-link" myatt="hello">Show inline popup</a>

<script src="jquery.magnetic.custom.js"></script>

<script>

    $(document).ready(function() {
      $('.open-popup-link').magnificPopup({
        type:'inline',
        midClick: true,
        callbacks: {
          open: function() {

            if ($(this).attr('myatt')=="hello") 
            { 
              // do something 
              console.log("it works");
            }
            else
            {
              console.log("doesnt work");
            }

          },
          close: function() {

          }
        }

      });
    });

</script>

<div id="test-popup" class="white-popup mfp-hide">
  Popup content
</div>
11
Imme22009

Magnific Popupv0.9.8の場合

var magnificPopup = $.magnificPopup.instance,
              cur = magnificPopup.st.el;
console.log(cur.attr('myatt'));
13
Konpaka

まず、データ属性(data-custom = "foo")または既知の属性を使用することをお勧めします。

HTML:

  <a href="photo.jpg" class="popup" data-custom="dsaad">Do it!</a>
  <a href="photo.png" class="popup" data-custom="mycustomdata">Do it!</a>

jQuery:

$('.popup').magnificPopup({
  type : 'image',
  callbacks : {
    open : function(){
      var mp = $.magnificPopup.instance,
          t = $(mp.currItem.el[0]);

      console.log( t.data('custom') );
    }
  }
});

より良い方法が存在するかどうかはわかりません。実際には、パブリックメソッドに関するドキュメントを読むことができ、そこで表示されます。上記のコードをテストしましたが、すべて正常に動作します:)

6
stefanz

V。0.9.9の場合:

this.currItem.el

5
user3364436

また、open: function(item) {}内では、_this.content_が役立つ場合があります。表示されているコンテンツのdivを返します。 change: function () {}でも役立ちます。それが私のような誰かに役立つことを願っています。

0
StinkyCat
// "item.el" is a target DOM element (if present)
// "item.src" is a source that you may modify
open: function(item) {}

そして、data-attributesを使用して、data-myatt-を例に挙げます。

$(this).data('myatt')
0
maximkou

クリックされた要素には、以下を使用してコールバック内でアクセスできます。

this.st.el

コールバック内では、「this」は$ .magnificPopup.instanceを指します。

公共施設の下:

"magnificPopup.st.el //ポップアップを開いたクリックされた要素をターゲットにします(ポップアップがDOM要素から初期化されている場合に機能します)"

0
jwinn