最佳实践(jQuery,CSS):如何初始化将切换可见的隐藏元素?

时间:2011-04-09 07:48:42

标签: css fade jquery

Stack警告我这是一个主观问题,可能会很接近,但无论如何我都会尝试这个。

我有一组控制按钮附加到图库中的图片。这些最初是隐藏的,当鼠标悬停在图像上时切换可见。我的问题是:

这些按钮是应该设置为隐藏在样式表中还是保持可见,并在加载时被jQuery隐藏?我想要优雅的降级,所以如果我希望在没有启用javascript的情况下可以看到这些,那么在CSS中初始化这个似乎是一个坏主意。

除此之外,我正在使用Ajax加载这些图像的页面。如果我使用jQuery hide执行此操作,则不会影响从ajax请求加载的那些,因为它仅在$(document).ready()上触发。我已尝试使用live('ready'),但了解到live()不支持该事件。

那么这样的事情的最佳做法是什么?看起来这样做有很多优点和缺点(css与document.ready),如果它们被默认的CSS隐藏,按钮将使用ajax分页进行精确切换。但是如果没有启用javascript,按钮的功能将会丢失。有没有人对此提出建议?

注意:我最初没有提到它,但它很重要。我目前正在使用fadeToggle()来完成我的过渡,这可能是整个问题的复杂化。到目前为止,所有这些解决方案似乎都有效,但在引入衰落时并非如此。

2 个答案:

答案 0 :(得分:6)

如果你试图改变通过Ajax加载的元素的样式,那就像你试图击中移动的目标一样。我会在样式表中创建两个声明 - 一个用于隐藏,一个用于可见 - 然后根据附加到body标签的类(或任何其他包含标签)切换它们。

像这样:

body .mybutton {
  display:block;
}

body.loaded .mybutton {
  display:none;
}

然后在你的JS文件中:

$(document).ready(function() {
  $('body').addClass('loaded');
});

这样,任何具有类名mybutton的元素 - 当前和未来 - 都将应用适当的样式。

答案 1 :(得分:2)

最初使用display:none;隐藏CSS,然后使用jQuery的toggle()再次显示和隐藏。这是最好的方法。对于没有启用JavaScript的人,我不担心。他们占1%的用户。每个人都启用了JavaScript。

检查工作示例http://jsfiddle.net/znJxh/