2013-01-10 80 views
0

我正在使用jQuery的排序来求助一个列表。这些项目都有编号,所以我希望能够在度假村之后注明新号码。最初,我在完成排序后重新加载了页面。但是,我刚刚“发现”了ajax,发现它是一个潜在更清洁的解决方案。我的代码几乎可以工作,除了一个问题。在排序之前首次加载页面时,会隐藏一堆span标签;但是,在我做了ajax调用之后,他们变得不被隐瞒,我希望他们保持隐藏。我试过了:等待ajax调用完成

$.ajax({ 
       url: "/main_scripts/sort_chapters_and_sections.php", 
       type: "POST", 
       data: newOrder, 
       success: function(thing_reordered){           $(".inline_link_list").html(thing_reordered); 

$("span").each(function(){ 
    if ($(this).attr('class').match(/\bspan_hidden/)){ 
     $(this).hide(); 
    } 
}); 
} 
}); 

但是,通话结束后,我的span_hidden标签变为不隐藏。我的猜测是,ajax调用还没有完成,所以我的“span_hidden”标签还没有在浏览器中,随后什么也没有隐藏。如果我能理解如何确保ajax调用完成,我可以测试这个理论。任何帮助,将不胜感激。

回答

0

if语句看起来不对。此外,你不需要使用each()来进行这样简单的搜索。

只是尝试:

$('.span_hidden').hide(); 
+0

感谢您的反馈意见;我实际上需要更复杂的版本,因为它们的形式为span_hidden_​​1,span_hidden_​​2等。无论如何,我不确定“if”声明有什么问题... – Eric

+0

我的不好,“if”是好的。你能否进一步解释ajax调用后span标签会发生什么? “他们不被隐瞒”是什么意思?他们是相同的标签还是被替换? – aaaa

+0

不用担心!基本上,当页面最初加载时,我的所有“span_hidden”标签都被隐藏(在$(document).ready(....)后面);如果用户点击某些链接,它们将被隐藏。隐藏所有内容,然后当我进行ajax调用并重新排列页面上的某些内容时,“span_hidden”标签不再隐藏(我在上面的代码中忽略了一个重要的行,它成功替换了页面上的一些html “thing_reordered”)。我的想法是,“thing_reordered” - 带有span_hidden标记的html - 还没有完全加载,因此没有什么可以隐藏的。 – Eric