Javascript 从jquery ajax加载导入数据时创建的重复div标记
我使用的脚本使用.load()ajax函数将数据从另一个页面导入相同ID的当前页面。以下是重点: $('#content').load(toLoad',showNewContent()) 其中toLoad是一个包含say“about.html#content”的变量。那很好。然而,我最终在我的原始div周围附加了一组div标记。它将文本与其他页面的标记一起导入,并将它们放入我的原始div标记中。这会导致我的页面在嵌套重复div时看起来不正确,因为存在边距等问题。据我所知,load()应该用于此目的,所以我一定是做错了什么。在我问“如何从ajax负载中剥离html标记”之前,我只是想知道这是否是正常行为。如果是,那么是的,在导入内容之前,如何从ajax加载中剥离html标记?另外,它似乎在父div中添加了一个style='display:block'内联。这似乎不是问题,但我也不需要它。谢谢~ 如果您感兴趣,以下是整个脚本:Javascript 从jquery ajax加载导入数据时创建的重复div标记,javascript,jquery,html,css,ajax,Javascript,Jquery,Html,Css,Ajax,我使用的脚本使用.load()ajax函数将数据从另一个页面导入相同ID的当前页面。以下是重点: $('#content').load(toLoad',showNewContent()) 其中toLoad是一个包含say“about.html#content”的变量。那很好。然而,我最终在我的原始div周围附加了一组div标记。它将文本与其他页面的标记一起导入,并将它们放入我的原始div标记中。这会导致我的页面在嵌套重复div时看起来不正确,因为存在边距等问题。据我所知,load()应该用于此目
$('#nav li a').click(function(){
var toLoad = $(this).attr('href')+' #content';
$('#content').hide('fast',loadContent);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn('normal');
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').show('normal',hideLoader());
}
function hideLoader() {
$('#load').fadeOut('normal');
}
return false;
});
$('nav li a')。单击(函数(){
var toLoad=$(this.attr('href')+'#content';
$('content').hide('fast',loadContent);
$(“#加载”).remove();
$(“#包装器”).append('LOADING…');
$('加载').fadeIn('正常');
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadContent(){
$('#content').load(toLoad',showNewContent())
}
函数showNewContent(){
$('#content').show('normal',hideLoader());
}
函数hideLoader(){
$('加载').fadeOut('正常');
}
返回false;
});
我知道我迟到了,但我希望这对其他人有所帮助,就像我到达本页面时对我所做的那样。
您可以转义嵌套的
或
而不是:
$("#table_id").load("page.html #table_id");
用这个来代替:
$("#table_id").load("page.html ##table_id > *");
这将导致您的
不重复,猜猜看,您的表css将保持不变 是的,这是正常的行为.load()
不会替换应用该元素的元素,它会将该元素的内部HTML设置为AJAX调用返回的HTML。Ok可能重复,谢谢您的确认。我通过创建一个包装器div来修复它。然后将嵌套的ajax调用导入其中。我相信这与您在可能重复的问题中给出的解决方案类似。那么,load函数是否仅在有空包装器div可供调用时才主要用于替换内容?有没有更好的方法可以像我尝试做的那样,将内容替换为内容。。。在我看来,创建包装器似乎是一种修补程序,特别是如果一个页面上有多个实例,那么就会有大量不必要的div。当服务器只返回内容时,通常使用load
。例如,如果您正在填写一个表,服务器将返回所有
标记,然后您将其加载到
元素中。另一种解决方法是使用.get()
而不是.load()
,并让您的回调函数在\content
DIV上使用.replaceWith()
。