在具有相同类的页面上的隐藏 Div 之间切换会影响所有 Div

发布于 2024-11-02 12:02:41 字数 1256 浏览 3 评论 0原文

我的页面上有 2 个带有单独 ID 的 div。在这些 div 中,我有一个共享同一类的无序列表 (.stats-nav):

<div id="product1">
<ul class="stats-nav">
    <li class="stat-cat1"><a href="">Ingredients</a></li>
    <li class="stat-cat2"><a href="">Nutrition Info</a></li>
    <li class="stat-cat3"><a href="">Feeding Instructions</a></li>
</ul>
</div><!--end product1-->

<div id="product2">
<ul class="stats-nav">
    <li class="stat-cat1"><a href="">Ingredients</a></li>
    <li class="stat-cat2"><a href="">Nutrition Info</a></li>
    <li class="stat-cat3"><a href="">Feeding Instructions</a></li>
</ul>
</div><!--end product2-->

一次仅显示 1 个 div;另一个是隐藏的(显示/隐藏)。列表项也是如此:一次仅显示一个。默认状态是“成分”。

我正在使用 Jquery 的 live 来绑定它:

$("li.stat-cat1 a").live('click', function() {
$(".nutritional-info").show();
return false;
});

我遇到的问题是,如果我正在查看 #product2 并单击“营养信息”,然后单击 #product1,它将显示 #product1 的正确信息,但它会从我上次停下来的“营养信息”开始,而不是默认状态“成分”。

有没有办法让我“清除”div 的最后状态?

(如果我通过 ajax .load 加载它,内容会按预期刷新,但我不再希望使用 ajax 方法)。

谢谢!

I have 2 div's on my page with individual id's. Within those div's I have an unordered list that shares the same class (.stats-nav):

<div id="product1">
<ul class="stats-nav">
    <li class="stat-cat1"><a href="">Ingredients</a></li>
    <li class="stat-cat2"><a href="">Nutrition Info</a></li>
    <li class="stat-cat3"><a href="">Feeding Instructions</a></li>
</ul>
</div><!--end product1-->

<div id="product2">
<ul class="stats-nav">
    <li class="stat-cat1"><a href="">Ingredients</a></li>
    <li class="stat-cat2"><a href="">Nutrition Info</a></li>
    <li class="stat-cat3"><a href="">Feeding Instructions</a></li>
</ul>
</div><!--end product2-->

Only 1 of the divs are show at a time; the other is hidden (show/hide). The same is true for the list items: only one is shown at a time. The default state is "Ingredients".

I'm using Jquery's live to bind it:

$("li.stat-cat1 a").live('click', function() {
$(".nutritional-info").show();
return false;
});

The problem I am having is if I'm looking at #product2 and click on say "Nutritional Info" and then click over to #product1, it will show #product1's correct info but it will start where I left off at "Nutritional Info" rather than the default state "Ingredients".

Is there a way for me to "clear" the last state of the div?

(If I load it in via ajax .load the content refreshes as intended but I no longer wish to use the ajax method).

Thanks!

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

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

发布评论

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

评论(2

静待花开 2024-11-09 12:02:41

我不确定我是否理解正确,但看起来您正在将事件应用于两个“li.stat-cat1”。听起来你需要隔离每一个。或者您需要引用与点击相关的单个链接。我没有看到任何名为“营养信息”的课程,所以我猜测它是 ul 的子级。

$("li.stat-cat1 a").live('click', function() {
    $(".nutritional-info").hide();//hide all
    $(this).closest('stats-nav').find(".nutritional-info").show();
});

编辑:
经过进一步思考,您可能只需要向单击事件添加一个新类。

$("li.stat-cat1 a").live('click', function() {
    $(".nutritional-info").show();
    $(".nutritional-info").addClass('selected')
    return false;
});

然后您可以稍后通过以下方式找到它:

$(".nutritional-info.selected")

I'm not sure i understand correctly, but it looks like you are applying your event to both 'li.stat-cat1'. It sounds like you need to isolate each. Or that you need to reference the individual link relative to the click. I don't see any class called 'nutritional-info', so i'm guessing its a child of the ul.

$("li.stat-cat1 a").live('click', function() {
    $(".nutritional-info").hide();//hide all
    $(this).closest('stats-nav').find(".nutritional-info").show();
});

EDIT:
After further thought, you might just need to add a new class to your click event.

$("li.stat-cat1 a").live('click', function() {
    $(".nutritional-info").show();
    $(".nutritional-info").addClass('selected')
    return false;
});

Then you can find it later by:

$(".nutritional-info.selected")
晨敛清荷 2024-11-09 12:02:41

我认为你的问题是你的选择器 $(".nutritional-info") 正在查找页面上的所有元素,无论它们的父 div 是否可见。要过滤操作以仅作用于可见产品,请尝试以下操作:

$("li.stat-cat1 a").live('click', function() {
    $("div:visible .nutritional-info").show();
    return false;
});

I think your problem is that your selector $(".nutritional-info") is finding all the elements on the page regardless of whether their parent div is visible or not. To filter the action to only act on the visible product try something like:

$("li.stat-cat1 a").live('click', function() {
    $("div:visible .nutritional-info").show();
    return false;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文