@Kei05

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

jQuery自作プラグインでトリガーとなるセレクタを取得したい

jQuery依存の自作プラグインを作る際にメソッドを実行するセレクタをプラグイン内で取得したいのですが、どのようにすれば取得できますでしょうか?

jquery.pluginName.js
;(function($) {
  $.fn.pluginName = function(options) {

    // Default Settings
    let defaults = {
      triggerClass: "" // TODO: $('').pluginName();で選択したセレクタを取得したい
    }
    
    // Merge user settings with default settings
    let settings = $.extend({}, defaults, options);
    
    return this.each(function() {
      
    });
  };
})(jQuery);
script.js
$('.trigger').pluginName(); // NOTE: ここで指定した「.trigger」を取得したい
0 likes

1Answer

バージョン1.10以下であれば、this.selectorで取得できます。バージョン3以降であれば、別に引数として指定する必要があります(※公式ドキュメンテーション参照)。

そもそもjQueryオブジェクトに対するメソッドであれば、セレクターは不要な気がします。(this.filter()等で十分では……)

0Like

Comments

  1. @Kei05

    Questioner

    ご回答いただきありがとうございます。
    使用しているjQueryはv3.6.0ですので.selector以外の方法で取得する必要がありそうです。

    ちなみに、this.filter()の場合はどのような記述になりますでしょうか?
    ご教示いただけますと幸いです。

    当初、セレクタで指定したクラス名の末尾に特定の単語をつけて対象の要素に付与しようとしていましたが、ユーザが要素セレクタを使用する可能性もあることを考慮できていなかったので、オプションから取ってきた方が良さそうですね。
  2. すみません、その目的ならばfilterじゃないですね。クラスに凝るとすれば各要素のclassListを取得して共通するクラスを探すか、そうでなければ各要素にdataset(jQueryでいう`.data()`)を設定するのがいいんじゃないでしょうか。(※何をしたいか分からないので推測ですが)
  3. @Kei05

    Questioner

    今回はオプションとしてクラス取ってくる形にしようと思います。
    ご回答いただきありがとうございました!

Your answer might help someone💌