我正在尝试在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
?
谢谢!
答案 0 :(得分:2)
您可以尝试使用
that.addGadget = $.fn.addGadget = function (options, callback) {
console.log($(this).selector);
};
答案 1 :(得分:2)
人们使用的是.selector
属性,但我不确定它是否曾得到官方支持。
无论哪种方式,它现在都被正式弃用。
jQuery 1.7中不推荐使用
.selector
属性 ,只在jQuery 1.9中维护,以支持jQuery中.live()
所需的范围迁移插件。 在将来的版本中可能会在不事先通知的情况下将其删除。 该属性从未成为可用于获取当前包含在jQuery中的元素集的选择器的可靠指示器设置它是属性的位置,因为后续的遍历方法可能已经更改了集合。 需要使用选择器的插件应该在初始化期间将调用者传递给选择器作为插件参数的一部分。
答案 2 :(得分:0)
如@Dogbert的评论中所述
console.log(this);
应该返回调用该函数的选择器。它确实......