如果ajax完成用所请求的数据替换html

时间:2015-08-11 14:37:31

标签: javascript jquery html ajax

我的问题是,我想要替换tooltip-content中的内容,但它并不能取代它。 例如,如果我将body内容替换为可用的data内容,但它不会替换tooltip-content

目前是tooltip-content中的加载sybmol。它只是HTML和CSS。

我有这个javascript:

$('td').hover(function () {
    if ($(this).find('div.tooltip').length != 0 ) {
        $.ajax({
            method: "POST",
            url: "dig.php",
            data: {
                host: $(this).find(' div.tooltip').attr('data-href'),
                server: $(this).find(' div.tooltip').attr('data-server')
            }
        })
        .done(function (data) {
            console.log('worked');
            $(this).find('div.tooltip-content').html(data);
        });
    }
});

1 个答案:

答案 0 :(得分:2)

ajax成功中的

this是指xhr对象。您需要将其作为上下文传递或将其设置为变量。

$('td').hover(function() {
  var $this=$(this);
  if ($this.find('div.tooltip').length != 0) {
    $.ajax({
        method: "POST",
        url: "dig.php",
        data: {
          host: $(this).find(' div.tooltip').attr('data-href'),
          server: $(this).find(' div.tooltip').attr('data-server')
        }
      })
      .done(function(data) {
        console.log('worked');
        $this.find('div.tooltip-content').html(data);
      });
  }
});

如果设置了上下文

,则可以在ajax成功中使用this
$('td').hover(function() {
  if ($(this).find('div.tooltip').length != 0) {
    $.ajax({
        method: "POST",
        url: "dig.php",
        context: this,
        data: {
          host: $(this).find(' div.tooltip').attr('data-href'),
          server: $(this).find(' div.tooltip').attr('data-server')
        }
      })
      .done(function(data) {
        console.log('worked');
        $(this).find('div.tooltip-content').html(data);
      });
  }
});

参考:http://api.jquery.com/jquery.ajax/