Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jquery ajax加载导入数据时创建的重复div标记_Javascript_Jquery_Html_Css_Ajax - Fatal编程技术网

Javascript 从jquery ajax加载导入数据时创建的重复div标记

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()应该用于此目

我使用的脚本使用.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'内联。这似乎不是问题,但我也不需要它。谢谢~

如果您感兴趣,以下是整个脚本:

$('#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()