如何使用 Jquery 隐藏隐藏选项卡上的子元素,并使其保持隐藏状态直到我取消隐藏它?

发布于 2024-12-15 04:49:34 字数 964 浏览 2 评论 0原文

也许最好用一个例子来解释:

<div id="tab-1">
  <input name="1" type="text" />
  <input name="2" type="text" />
  <input name="3" type="text" />
<div>
<div id="tab-2">
  <input name="4" type="text" />
  <input name="5" type="text" />
  <input name="6" type="text" />
<div>

我正在使用 Jquery Tools“Tabs”工具。这会切换上面两个 div 的可见性,以便一次只显示一个。

问题如下:

  1. 用户切换到选项卡 2。这会隐藏选项卡 1 以及字段 1 到 3。 这还显示选项卡 2 及其子项、字段 4 到 6。

  2. 用户对选项卡 2 执行操作,该操作应从现在隐藏的选项卡 1 中删除字段 2。我正在使用 $('#field-2').hide(0);

应该隐藏字段二,但什么也不做,因为字段二已经隐藏。现在就这样好了。

3.用户切换回选项卡1。

实际结果: 所有三个字段(包括字段 2)现在再次可见。

期望的结果: 字段 1 和 3 现在可见,但切换到 tab-1 不会取消隐藏字段 2,因为它已被函数显式隐藏。字段 2 应保持隐藏状态,直到明确取消隐藏为止。

我想我可以通过使用 display:none; 为字段分配一个特殊的 css 类来规避这个问题,但我想知道是否有更好的解决方案来独立于选项卡显示/隐藏该元素已打开,无需分配额外的 css 类。

Probably best to explain with an example:

<div id="tab-1">
  <input name="1" type="text" />
  <input name="2" type="text" />
  <input name="3" type="text" />
<div>
<div id="tab-2">
  <input name="4" type="text" />
  <input name="5" type="text" />
  <input name="6" type="text" />
<div>

I'm using the Jquery Tools "Tabs" tool. This toggles the visibility of the two divs above so that only one shows at a time.

The problem is as follows:

  1. The user Switches to tab 2. This hides tab-1, and fields 1 through 3.
    This also shows tab-2 and its children, fields 4 through 6.

  2. The user takes an action on tab-2 that should remove field 2 from the now hidden tab-1. I'm using $('#field-2').hide(0);

This should hide field two, but does nothing since field two is already hidden. That's fine for now.

3.The user switches back to tab-1.

Actual result:
All three fields, including field 2, are now visible again.

Desired result:
Fields 1 and 3 are now visible, but switching to tab-1 does not un-hide field 2, since it was explicitly hidden by a function. Field 2 should stay hidden until explicitly unhidden.

I'm thinking I may be able to circumvent this by assigning a special css class to the field with display:none;, but I was wondering if there's a better solution to show/hide independatly of the tab the element is on without assigning extra css classes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一曲爱恨情仇 2024-12-22 04:49:34

如果您实际更改元素的 display 样式,而不是使用 hide,它似乎可以工作:

$('selector').css('display', 'none');

It appears to work if you actually change the element's display style, instead of using hide:

$('selector').css('display', 'none');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文