jquery load()并追加

Dan*_*ele 30 jquery

愚蠢的快速问题:

我有我的:

$('#result').load('ajax/test.html');
Run Code Online (Sandbox Code Playgroud)

但是,如果我不想将我加载的内容插入到#result中,但是将其添加到#result,维护所有先前元素,该怎么办?是否可以创建变量,使用内容加载它,然后将其追加或添加到我的#result中?我想象一些其他场景,在我将全新的变量插入到DOM之前我可以操作它.

Sve*_*der 32

你的意思是这样的?

var content;
$.get('ajax/test.html', function(data){
    content= data;
    $('#result').prepend(content);
});
Run Code Online (Sandbox Code Playgroud)

这会将您加载的内容首先保存到变量中,然后您可以根据需要对其进行操作.


Ale*_*igo 24

var response;
$.ajax({ type: "GET",   
     url: "ajax/test.html",   
     async: false,
     success : function(text)
     {
         response= text;
     }
});
$('#result').prepend('<div>'+response+'</div>');
Run Code Online (Sandbox Code Playgroud)

您需要"async:false",以便等待响应.如果您不等待它(正常的Ajax异步调用),您将在未知时间内有一个未定义的变量,因此它可能很危险.

编辑:正如评论正确地说,使用"async:false"是不常见的并且是丑陋的.通常,您会操纵响应并将其插入成功回调内的DOM中.如果你真的需要在变量中等待另一个东西使用该变量的响应,那么仅需要使用异步,而不是常见的事情.

$.ajax({ type: "GET",   
     url: "ajax/test.html",   
     success : function(text)
     {
         $('#result').prepend('<div>'+text+'</div>');
     }
});
Run Code Online (Sandbox Code Playgroud)

  • 同步加载是个坏主意. (9认同)
  • 同意@Ryan-只需将.prepend()语句放入成功回调函数中即可。无需使其同步。 (2认同)

Ry-*_*Ry- 21

一个快速的方法可能是:

$('#result').append($('<div>').load('ajax/test.html'));
Run Code Online (Sandbox Code Playgroud)


Shy*_*yju 6

做一个jQuery帖子并将数据加载到vaiable并预先添加到所需的div

$.post('ajax/test.html', function(data) {
  $('#result').prepend(data);  
});
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为这是一个较短的解决方案

$.get("ajax/test.html",function (dados) { $("#result").append(dados);});
Run Code Online (Sandbox Code Playgroud)