【问题标题】:jquery hide problemjquery隐藏问题
【发布时间】:2011-02-25 18:59:46
【问题描述】:

我用它来切换我的 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 都会再次隐藏,因为页面已重新加载。可惜……

是否可以在我搜索完之后不再隐藏?当我打开页面时会很好,所有divs 都被隐藏了,但之后我切换它时...

【问题讨论】:

    标签: php jquery


    【解决方案1】:

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

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

    • 将其包含在查询字符串中
    • 将其包含在 URL 哈希中
    • 使用 cookie

    【讨论】:

    • 如果他正在提交表单,那么隐藏输入也可以。
    【解决方案2】:

    嗯,是的,如果有搜索请求,您就不要运行初始的hide()。如果在 PHP 级别上,您知道自己正在执行搜索,我会从输出中排除该行。

    【讨论】:

      【解决方案3】:

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

      我们选择而不是只隐藏所有元素的类名,而是命名 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);
      

      【讨论】:

        猜你喜欢
        • 2015-07-12
        • 2017-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多