如果在选择器上调用jquery函数,如何在被调用的函数中检索选择器?

时间:2013-05-20 14:56:26

标签: javascript jquery function selector

我正在尝试在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

问题:
在我的foo方法中,我需要更改哪些内容才能访问addGadget

谢谢!

3 个答案:

答案 0 :(得分:2)

您可以尝试使用

that.addGadget = $.fn.addGadget = function (options, callback) {
    console.log($(this).selector);
};

答案 1 :(得分:2)

人们使用的是.selector属性,但我不确定它是否曾得到官方支持。

无论哪种方式,它现在都被正式弃用。

来自.selector docs

  

jQuery 1.7中不推荐使用.selector属性 ,只在jQuery 1.9中维护,以支持jQuery中.live()所需的范围迁移插件。 在将来的版本中可能会在不事先通知的情况下将其删除。 该属性从未成为可用于获取当前包含在jQuery中的元素集的选择器的可靠指示器设置它是属性的位置,因为后续的遍历方法可能已经更改了集合。 需要使用选择器的插件应该在初始化期间将调用者传递给选择器作为插件参数的一部分。

答案 2 :(得分:0)

如@Dogbert的评论中所述

console.log(this);

应该返回调用该函数的选择器。它确实......

相关问题