0

jQueryセレクターで関数を呼び出せるようにしようとしています。

私のページでやっていることは次のとおりです。

<!DOCTYPE html>
<head>
  <meta charset="utf-8">
  <title>first</title>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script type="text/javascript" src="../myplugin.js"></script>
</head>
<body>
  <div class="foo"></div>

  <script type="text/javascript">
    // my custom function 
    $(".foo").addGadget({ "src":"gadgets/menu.html", "param":{"filter":"office"}},
        function (error, response) {
          console.log("hello!!!");
        });
  </script>
</body>
</html>

だから私は自分のカスタム関数を呼び出すことができるようにしaddGadget()たい$('foo'). これは問題なく動作します:

(function (window, jquery, undefined) {
  var that = {};

  that.addGadget = $.fn.addGadget = function (options, callback) {
    console.log("I'd like to access my element here");
    console.log(this);
    console.log($(this));
  };

  return window.myPlugin = that;
}(window, $));

だから私は両方を呼び出すことができます

 myPlugin.addGadget();
 $('.foo').addGadget();

foo問題は、メソッド内にアクセスできないことです。

質問: myメソッド内
にアクセスできるようにするには、何を変更する必要がありますか?fooaddGadget

ありがとう!

4

3 に答える 3

2

人々が使用したプロパティがあり.selectorますが、公式にサポートされていたかどうかはわかりません。

いずれにせよ、現在は公式に廃止されています。

.selectorドキュメントから:

プロパティは.selectorjQuery 1.7 で廃止され.live()、jQuery Migrate プラグインでのサポートに必要な範囲でのみ jQuery 1.9 で維持され将来のバージョンでは予告なく削除される可能性があります。後続のトラバーサル メソッドがセットを変更した可能性があるため、プロパティは、プロパティである jQuery セットに現在含まれている要素のセットを取得するために使用できるセレクターの信頼できる指標ではありませんでした。セレクターを使用する必要があるプラグインでは、初期化中にプラグインの引数の一部としてセレクターに呼び出し元を渡す必要があります。

于 2013-05-20T15:08:31.007 に答える
2

あなたは使用してみることができます

that.addGadget = $.fn.addGadget = function (options, callback) {
    console.log($(this).selector);
};
于 2013-05-20T15:00:41.093 に答える
0

@Dogbert のコメントで述べたように

console.log(this);

関数が呼び出されたセレクターを返す必要があります。します...

于 2013-05-20T15:26:15.807 に答える