1

我有一个 HTML/CSS 菜单,需要将其与旧版 ASP 应用程序集成。根据用户或环境,某些菜单项会根据各种客户端条件显示或隐藏。

大多数情况下,客户端条件决定是否显示或隐藏单个菜单项,但有时一组项目可能需要客户端的相同条件。如果这令人困惑,我提前道歉,但这里有一个例子:

<li>Link 1</li> 
<li>Link 2</li>
<li>Link 3</li>
<li>Link 4</li>

在上面的示例中,链接 1、2 和 4 仅应在 variable 时显示bFoo == 60。无论如何都应该显示链接 3。

我想知道将特定逻辑应用于可能是或可能不是顺序的一组元素的最佳方法是什么。显然,我可以为每个元素分配一个单独的 ID,并将它们分组到我的选择器中,如下所示:

$("#link1, #link2, #link4").toggle(bFoo == 60);

我还可以给元素一个通用类,如下所示:

$(".special-links").toggle(bFoo == 60);

为了清楚起见,我倾向于第一个选项,但我想知道是否有更好的选择,但我还没有考虑过。在包含 100 多个链接的整个菜单中,上述示例有不同的变体,因此我希望我的解决方案尽可能可维护。我上面提到的是否是我所希望的最好的,或者我现在真的很愚蠢并且忽略了一个明显而简单的解决方案?

我希望我的要求是有道理的。如果我的问题不清楚,请告诉我,我会尽力解释得更好。

4

2 回答 2

1

ID 无关紧要 - 采用更适合您的代码的方法。

不过,我会避免eval。使用这样的东西:

if (bFoo == 60) {
    $("#link1, #link2, #link4").toggle();
}
于 2013-07-03T23:54:34.743 回答
1

我将我的评论作为答案(在此处获得评论;))

if (bFoo) {
    $(".a"+bFoo).toggle();
}
于 2013-07-04T00:05:44.133 回答