2017-11-12 10 views
-2

初心者ここ...このjqueryコードをjqueryプラグインに変換するには?

私はこの素晴らしいポップアップコードをここで見つけました。私は自分のプロジェクトでそれを使っています。私が求めているのは、誰かがプラグインのコードに変換して、必要なdivをターゲットにして、複数の要素で簡単に使用できるように助けることができるかどうかです。

コード:

$(document).ready(function() { 
    var offsetY = window.pageYOffset, 
    $body = $('body'), 
    $win = $(window), 
    $close = $('.mobile-filters-close'), 
    $open = $('.filters-toggle'), 
    $holder = $('.mobile-filters-wrapper'), 
    $stuff = $('.mobile-filters-wrapper .filters'); 

    // Close with 'esc' key 
    $(document).keyup(function (e) { 
     if (e.keyCode == 27) $close.trigger('click'); 
    }); 

    $open.click(function() { 
     offsetY = window.pageYOffset; 
     // Block scrolling 
     $body.css({ 
     'position': 'fixed', 
     'color': '#FFFF00', 
     'backgroundColor': '#00D', 
     'top': -offsetY + 'px' 
    }); 

    // Show popup 
    $holder.css('display', 'block'); 
    }); 

    $close.click(function() { 
     // Allow scrolling again 
     $body.css({ 
     'position': 'static', 
     'color': '', 
     'backgroundColor': '' 
    }); 

    /** 
    * Remove the following scrollTop()'s if you want. 
    * just a UI tweak that the user would expect. 
    **/ 
    // Make the page stay at the position it was at before the overlay 
    $win.scrollTop(offsetY); 
    // Reset the overlay scroll position to the top 
    $stuff.scrollTop(0); 
    // Hide popup 
    $holder.css('display', 'none'); 
    }); 
}); 

そして、これは私が探しているものです:助けを

$('.popup').CoolName({ 
    // options 
    $close = $('.mobile-filters-close'), 
    $open = $('.filters-toggle'), 
    $holder = $('.mobile-filters-wrapper'), 
    $stuff = $('.mobile-filters-wrapper .filters'); 
}); 

感謝:)あなたのため

+1

https://learn.jquery.com/plugins/basic-plugin-creation/ –

+0

自分で試してみてください。インターネットはあなたのものです。次に、あなたが問題を抱えているかどうか尋ねます。 –

+0

@ EvanTrimboliのリンクが複雑すぎる場合は、https://www.freelancer.com/。 – ceejayoz

答えて

1

クリーン物事ビット:

// Plugin function 
function coolName(triggers) { 
    $(document).ready(function() { 
     var offsetY = window.pageYOffset; 

     // Close with 'esc' key 
     $(document).keyup(function (e) { 
      if (e.keyCode == 27) triggers.close.trigger('click'); 
     }); 

     triggers.body.click(function() { 
      offsetY = window.pageYOffset; 
      // Block scrolling 
      triggers.body.css({ 
       'position': 'fixed', 
       'color': '#FFFF00', 
       'backgroundColor': '#00D', 
       'top': -offsetY + 'px' 
      }) 
     }); 

     // Show popup 
     triggers.holder.show(); 

     triggers.close.click(function() { 
      // Allow scrolling again 
      triggers.body.css({ 
       'position': 'static', 
       'color': '', 
       'backgroundColor': '' 
      }) 
     }); 

     /** 
     * Remove the following scrollTop()'s if you want. 
     * just a UI tweak that the user would expect. 
     **/ 
     // Make the page stay at the position it was at before the overlay 
     triggers.win.scrollTop(offsetY); 
     // Reset the overlay scroll position to the top 
     triggers.stuff.scrollTop(0); 
     // Hide popup 
     triggers.holder.hide() 
    }); 
} 

// Implementation 
coolName({ 
    close: $('.mobile-filters-close'), 
    open: $('.filters-toggle'), 
    holder: $('.mobile-filters-wrapper'), 
    stuff: $('.mobile-filters-wrapper .filters') 
}) 

メモthaプラグインを作成するときには、変数名、関数名、およびHTML要素名が他の人のコードと干渉する可能性が常にあります。あなたの変数や関数の前に "coolName_"をつけておくと、これを防ぐことができます。

+0

ありがとう!私はそれを試して、それがどんなにうまくいくかを見ています:) – StuckInThisCodes

+0

実際には欠けているような小さな問題がありました。 2つの異なるトリガーでそれを使用することはできませんでした。また、このバージョンは私のバージョンと同じに見えますが、スクロール位置を正しく復元しませんでした。しかし、私はこのバージョンでも作業を続けています – StuckInThisCodes

+0

私はこの種のUIをいつもしています。あなたは私に 'ethancrist96 @ gmail.com'をメールすることができます。あなたが達成しようとしていることは、よりエレガントな/簡単な方法で実際に行うことができます、私はあなたが望む具体的なものか分かりません。私はあなたを助けるのが大好きです。 – ethancrist

関連する問題