“这个”是什么意思?代表ajax函数内部

发布于 2024-11-26 03:22:36 字数 337 浏览 2 评论 0原文

我一直在尝试在 ajax 函数中使用它来引用事件目标。但似乎不是我的想法。

例如:

$('#test').live('click',function(){
     $.ajax({
         type:'post',
         url:
         data:...,
         success:function(mes){
             $(this).append('mes');
         }
     });
});

所以这里 $(this) 并不引用 ('#test') 选择器。它指的是什么? 感谢您的任何解释。

I have been trying to use this inside an ajax function to refer the event target . but it seems that is not the way I think.

for example:

$('#test').live('click',function(){
     $.ajax({
         type:'post',
         url:
         data:...,
         success:function(mes){
             $(this).append('mes');
         }
     });
});

so here $(this) does not refer to the ('#test') selector. what does it refer to??
thanks for any explanation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

记忆で 2024-12-03 03:22:36

在成功回调中,this 引用由 jQuery 创建的全局对象,其中包含有关 AJAX 请求的信息。如果您想获取原始 DOM 元素,您可以在闭包中捕获它:

$('#test').live('click',function() {
    var $this = $(this);
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        success: function(mes) {
            $this.append('mes');
        }
    });
});

或者如果您不喜欢闭包,您可以将其作为请求的键/值对传递:

$('#test').live('click',function() {
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        myElement: $(this),
        success: function(mes) {
            this.myElement.append('mes');
        }
    });
});

这在 的情况下可能很有用success 回调不是匿名函数。

Inside the success callback this refers to a global object created by jQuery containing information about the AJAX rerquest. If you want to get the original DOM element you could capture it in a closure:

$('#test').live('click',function() {
    var $this = $(this);
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        success: function(mes) {
            $this.append('mes');
        }
    });
});

or if you don't like closures you could pass it as a key/value pair of the request:

$('#test').live('click',function() {
    $.ajax({
        type: 'post',
        url: '/'
        data: { },
        myElement: $(this),
        success: function(mes) {
            this.myElement.append('mes');
        }
    });
});

This could be useful in scenarios where the success callback is not an anonymous function.

流年里的时光 2024-12-03 03:22:36

默认情况下,this 将是 AJAX 调用中使用的扩展设置对象。来自 文档

默认情况下,上下文是一个代表ajax设置的对象
在调用中使用($.ajaxSettings 与传递给的设置合并
$.ajax)。

您可以使用 context 设置来指定 this 将在回调中引用的对象:

$("#test").live("click", function() {
    $.ajax({
        type: "post",
        context: this,
        success: function(mes) {
            // Here, this will refer to #test.
            $(this).append('mes');
        }
    });
});

By default, this will be the extended settings object used in the AJAX call. From the documentation:

By default, the context is an object that represents the ajax settings
used in the call ($.ajaxSettings merged with the settings passed to
$.ajax).

You can use the context setting to specify the object this will refer to in callbacks:

$("#test").live("click", function() {
    $.ajax({
        type: "post",
        context: this,
        success: function(mes) {
            // Here, this will refer to #test.
            $(this).append('mes');
        }
    });
});
故事还在继续 2024-12-03 03:22:36

这是上下文。来自 JQuery 站点
所有回调中的 this 引用是设置中传递给 $.ajax 的上下文选项中的对象;如果未指定上下文,则这是对 Ajax 设置本身的引用。

This is context. From JQuery site:
The this reference within all callbacks is the object in the context option passed to $.ajax in the settings; if context is not specified, this is a reference to the Ajax settings themselves.

一直在等你来 2024-12-03 03:22:36

在该示例中,$(this) 将表示 $.ajax() 对象。

In that example, $(this) would represent the $.ajax() object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文