我需要多次在jQuery中执行相同的代码,所以我决定创建自己的jQuery函数。
到目前为止看起来像这样:
jQuery.fn.extend({
fooFunction: function () {
$.ajax({
type: "POST",
cache: false,
url: "includes/thescript.php",
success: function (data)
{
$(this).html(data);
}, complete: function () {
// do sth
}
});
return $(this);
}
});
但现在我遇到了问题,那就是#34;这个"似乎是指错误的实例,而在成功函数中使用它" $(this).html(data); "。
当我使用ID 时,例如$("#TheID&#34)的html(数据)。它有效,但为什么不用"这"?
介于:我用以下函数调用该函数: $("#TheID&#34)。fooFunction()
答案 0 :(得分:2)
问题是,当您进入this
参数提供的匿名函数时,success
的范围会发生变化。要解决此问题,您可以将外部作用域中的this
引用存储在变量中,如下所示:
jQuery.fn.extend({
fooFunction: function () {
var $el = $(this);
$.ajax({
type: "POST",
cache: false,
url: "includes/thescript.php",
success: function (data) {
$el.html(data);
},
complete: function () {
// do something
}
});
return $el;
}
});
答案 1 :(得分:0)
在jQuery ajax回调中,“ this ”是对ajax请求中使用的选项的引用。它不是对DOM元素的引用。
有关详细信息,请访问此链接$(this) inside of AJAX success not working
答案 2 :(得分:0)
在函数缓存$(this)
的开头,然后使用它。
this
而不是目标元素。
试试这个。
jQuery.fn.extend({
fooFunction: function () {
var $this = $(this);
$.ajax({
type: "POST",
cache: false,
url: "includes/thescript.php",
success: function (data)
{
$this.html(data);
}, complete: function () {
// do sth
}
});
return $this;
}
});