jquery隐藏问题

时间:2009-08-14 16:22:27

标签: php jquery

我用它来切换我的div元素,并在DOM准备就绪时隐藏它们......

   $('div[class*="showhide"]').hide();

   $('input:image').click( function() {
      var nr = $(this).attr('id').substr(7,2);
      $('div.showhide' + nr).toggle(400);
   });  

我已经用类showhide0;showhide1;showhide2等动态创建了div元素...... 在DIV标签内我有搜索框。

  • 首次加载页面时,所有DIV标签都会隐藏。
  • 我切换其中一个来表示。
  • 开始搜索,以便使用查询结果重新加载页面。

当然所有DIV都会再次隐藏,因为页面已重新加载。不幸的是...

搜索完东西后,是否有可能不再隐藏?打开页面会很好,所有的div都被隐藏了,但是当我切换它之后......

3 个答案:

答案 0 :(得分:1)

如果您需要一个或多个特定元素在页面重新加载时保持可见,那么您将需要做一些事情来维护请求之间的状态,然后在初始化可见状态时修改您的jQuery以利用该状态信息元素。

这可以通过多种方式完成,包括但不一定限于

  • 将其包含在查询字符串
  • 将其包含在网址哈希
  • 使用Cookie

答案 1 :(得分:0)

嗯,是的,如果有搜索请求,您只是不运行初始hide()。如果在PHP级别上你知道你正在执行搜索,我只是从输出中排除那一行。

答案 2 :(得分:0)

我们在工作的地方做类似的事情。

我们选择了而不是让所有元素都隐藏类名,而是将id命名为。

所以,我们有类似的东西:

<div id="hide1" class="hide"> </div>

与此CSS一起默认隐藏所有这些div

.hide {
    display: none;
}

最后,我们使用这样的东西来展示它们:

$('input:image').click( function() {
   var nr = $(this).attr('id').substr(7,2);
      $('#hide' + nr).toggle(400);
   });
}

这是因为CSS优先规则。 toggle()/ hide()/ show()方法会覆盖hide类的样式。

至于取消隐藏部分,如果您将ID传递给您的脚本取消隐藏,您可以解析它并取消隐藏相应的div。

您可以从window.location.search读取和处理查询字符串。不幸的是,您必须手动解析它或使用插件,例如jQuery Query String ObjectjQuery URL Utils

var id = $.query.get('unhide_id'); // This is using Query String Object
$('#' + id).show(400);