代码之家  ›  专栏  ›  技术社区  ›  Jason

在jquery中未定义在.get内使用$(this)

  •  2
  • Jason  · 技术社区  · 14 年前

    我正在使用简写的Ajax调用, $.get 但是当我试图引用一个变量 $(this) ,jquery告诉我它是未定义的。

    下面是代码块:

    $('.replaceWithObject').live('click', function(event) {
        var cid = $(this).find('input').val();
        $.get('GetVideoComment.ashx?cid=' + cid, function(data) {
            $(this).html(data);
        });
    });
    

    它找到了 cid 很好,就像 美元(这个) 得到 . 里面 .get 美元(这个) 是未定义的。将var设置为 美元(这个) 之前 get 也不管用?

    getVideoComment.ashx?cid=628 有效,它返回一个闪光对象。问题是 美元(这个) 在中未定义 得到 .

    你知道我要怎么做吗?或者我做错了什么?

    3 回复  |  直到 13 年前
        1
  •  4
  •   g.d.d.c    14 年前

    您需要缓存初始选择,以便在回调触发时它存在。

    $('.replaceWithObject').live('click', function(event) {
        var $this = $(this);
        var cid = $this.find('input').val();
        $.get('GetVideoComment.ashx?cid=' + cid, function(data) {
            $this.html(data);
        });
    });
    
        2
  •  2
  •   PetersenDidIt    14 年前

    试试这个:

    $('.replaceWithObject').live('click', function(event) {
        var that = $(this);
        var cid = that.find('input').val();
        $.get('GetVideoComment.ashx', {'cid': cid}, function(data) {
            that.html(data);
        });
    });
    

    问题是 this 里面 get 功能全部不再 .replaceWithObject 如果您在Click事件中缓存这个并使用该缓存,那么它将为您工作。

        3
  •  2
  •   Felix Kling    14 年前

    由于返回的数据似乎是HTML,因此您也可以使用 load() :

    从服务器加载数据,并将返回的HTML放入匹配的元素中。

    $('.replaceWithObject').live('click', function(event) {
        var cid = $(this).find('input').val();
        $(this).load('GetVideoComment.ashx?cid=' + cid);
        // or $(this).load('GetVideoComment.ashx', {cid: cid});
    });