jQuery的hide函数

3

我有一个关于jquery hide函数的一般性问题。我搜索了一下,似乎找不到直接的答案。我想知道在页面加载时隐藏的对象是否仍然被加载并隐藏,还是在触发器被调用后才加载。另外,如果这些对象已经被加载,是否有任何函数只会在触发器被调用后才加载隐藏的元素?


1
这取决于你在哪里调用它。 - alex
让我详细说明一下。我有一个特定的 div 显示了某些项目。在页面加载时,我隐藏了 div 中的项目,一旦使用 jQuery 的按钮调用扩展了 div,隐藏的元素将显示在放大的 div 中。即使使用 hide() 隐藏了这些项目,它们仍然在后台加载吗? - user981053
如果你在文档准备好时这样做,它会在DOM加载后有趣地首先隐藏它。而display:none(这基本上是hide函数所做的)不会限制内容的加载 - 只会限制其可见性。因此,你应该在服务器端进行过滤,或者在加载时使用JS添加它。 - Marco Johannesen
我该如何创建一个DIV,只有在Jquery中调用时才加载它? - user981053
4个回答

6
如果您在$(document).ready()中对某个元素调用.hide(),则该元素将按原样从服务器加载,然后在页面完全加载后隐藏。
这可能会导致“闪烁”——在页面加载时看到元素出现,然后在加载完成后消失。防止这种情况的最佳方法是确保在服务器上呈现时,如果它最初应该被隐藏,则具有display:none;的样式。
请注意,.show().hide()不会影响DOM中存在哪些元素(即哪些元素已加载)。相反,它们控制项目在页面加载后的可见性。
如果您实际上想要动态加载页面的某些部分,则需要使用jQuery的DOM操作方法,在某些事件的响应中添加新元素到页面中。

1

除了已经给出的答案之外,还有一些需要注意的地方。

如果您使用jquery hide()来隐藏一个元素,那么如果用户关闭了javascript,该元素将被显示出来,因为hide()不会发生。如果缺少javascript会影响显示或隐藏的功能或需求,则应该处理这种情况。以下是一些示例CSS类。

.hide-if-no-js {display:none;}
.show-if-no-js {display:block;}
.hide {display:none;}

然后,您可以将其应用于元素,具体取决于您是否希望最初显示或隐藏该元素 - 无论 JavaScript 是否可用。

如果 JavaScript 不可用,则隐藏;如果 JavaScript 可用,则隐藏:

<div id="aaa" class="hide-if-no-js">...</div>

如果js不可用,则显示,如果js可用,则隐藏:

<div id="aaa" class="show-if-no-js">...</div>
$("#aaa").removeClass("show-if-no-js").addClass("hide");

0

我不确定我理解了,使用jQuery隐藏某些内容时,它必须已经在页面中加载,除非你通过JavaScript创建它。你所说的“加载”,是指添加到DOM中吗?


0
我认为使用 jQuery.hide 函数隐藏的对象内容始终会被加载。因为首先您的网页将被加载,然后才会执行 JavaScript。当您只想在显示内容时加载内容时,应进行 ajax 调用以加载内容或将 div 设置为 display: none 初始状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接