我对jquery隐藏函数有一个一般性的疑问。我环顾四周,似乎找不到一个直接的答案。我想知道在页面加载时隐藏的对象是仍然加载然后隐藏,还是在触发器被调用后隐藏然后加载。另外,如果加载了对象,是否有一些函数只会在被触发时加载隐藏元素?
发布于 2011-10-27 17:05:34
如果在$(document).ready()
内部调用.hide()
,那么该元素将按原样从服务器加载,然后在页面完全加载后隐藏。
这可能会导致“flash”--在页面加载时看到元素出现,然后在加载后消失。防止这种情况的最好方法是确保它由服务器以display:none;
样式呈现,如果它最初打算隐藏的话。
请注意,.show()
和.hide()
不会影响DOM中存在的元素-即加载了哪些元素。相反,它们在页面加载后控制项的可见性。
如果您实际上希望动态加载页面的某些部分,则需要使用jQuery的DOM操作方法向页面添加新元素,以响应某些事件。
发布于 2011-10-27 17:38:55
作为对已经给出的答案的补充。
如果你使用jquery hide()来隐藏一个元素,那么如果用户关闭了javascript,那么这个元素就会被显示出来--因为hide()不会发生。如果功能或显示或隐藏的需求因缺少javascript而受到影响,那么处理这种情况是一个好主意。一些示例CSS类。
.hide-if-no-js {display:none;}
.show-if-no-js {display:block;}
.hide {display:none;}
然后,您可以将其应用于元素,这取决于您最初是要显示还是隐藏元素-而不管javascript是否可用。
如果js不可用则隐藏,如果js可用则隐藏:
<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");
发布于 2011-10-27 17:05:38
我不确定我是否理解了,要用jQuery隐藏一些东西,它必须已经加载到页面中,除非你从javascript创建它。添加到DOM中的“已加载”是什么意思?
https://stackoverflow.com/questions/7913718
复制相似问题