我正在尝试扩展一个对象,并且该对象包含多个函数。我无法解释它,所以让我向您展示我的代码。让我们从有效的开始:
(function ($) {
$.fn.extend({
Hello: function() {
console.log("Well, hello back!");
console.log($(this));
}
});
})(jQuery);
在 HTML 中:
<script>
$(document).ready(function() {
$('.target').Hello();
});
</script>
如预期的那样,$(this) 的控制台日志为我提供了被调用方元素“target”。
现在,让我们尝试一下:
(function ($) {
$.fn.extend({
Response: {
Hello: function() {
console.log("Well, hello back!");
console.log($(this));
}
}
});
})(jQuery);
在 HTML 中:
<script>
$(document).ready(function() {
$('.target').Response.Hello();
});
</script>
这还是吐槽“嗯,你好回来了!”在控制台中,但是当我使用 $(this) 时我不再得到被调用者。我得到的是 Hello 函数。
如何获得被调用者?我已经尝试过 this.parent,但它不起作用。请帮忙!
最佳答案
正如其他人所指出的,您无法真正做到您所要求的,但您可以做一些看起来几乎相同的事情。
通过用闭包捕获“this”,您可以在对象结构中进一步访问它:
$.fn.extend({
Response: function () {
var self = this;
return {
Hello: function () {
console.log(self);
}
};
}
});
$('.target').Response().Hello();
关于javascript - jQuery 函数扩展的范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481915/