【问题标题】:jQuery: if ID is equal to statementjQuery:如果 ID 等于语句
【发布时间】:2013-05-17 20:23:15
【问题描述】:

如果选择了 LI 之一,我正在编写一个执行操作的代码。 因此,如果第一个 LI 是“当前”的,我想对其执行操作,代码:

<div id="types">
    <div id="division1">
        <ul id="selection1">
            <li id="current"><a href="#" name="1-1"></a> </li>
            <li><a href="#" name="1-2"></a></li>
            <li><a href="#" name="1-3"></a></li>
        </ul>
    </div>
    <div id="division2">
        <ul id="selection2">
            <li><a href="#" name="2-1"></a></li>
            <li><a href="#" name="2-2"></a></li>
            <li><a href="#" name="2-3"></a></li>
        </ul>
    </div>
</div>

jQuery:

if (jQuery("#types div ul:nth-child(1)").attr("ID") == "current") {
    *do this*
}

有人知道我做错了什么吗?

【问题讨论】:

  • 我不会更改 ID 而是使用类。
  • 这不是唯一的代码,其他代码需要 ID 才能运行。这只是想法。
  • 尝试在当前选定的anchor 中使用Class 而不是ID 您的触发器。

标签: jquery html attr css-selectors


【解决方案1】:

ul 没有当前 ID,但 li

试试这个 -

if (jQuery("#types div ul:nth-child(1) li:first").attr("ID") == "current") {
    *do this*
}

【讨论】:

    【解决方案2】:

    我会把我的两分钱扔在这里

    if($('#types div ul > li:first').is('#current')){
        *do this*
    }
    

    我为内置的is() 扔掉了 1 个伪选择器、1 个额外的函数调用和 1 个比较,我发现它们更具可读性。

    并发了Fiddle for demo

    更新

    您的错误在于您在父 div #Uitleg1, #Uitleg2 上设置了 display:none,而当您尝试在您的孩子上设置 .show() 时,它继承了 display:none

    我用新的选择器更新了 CSS。

    #Uitleg1, #Uitleg2 div {
        display: none;
    }
    

    并从上面的那个中删除了display: none;。您的代码现在可以按预期工作了。

    又发了一个Fiddle for demo

    【讨论】:

    • 不做这项工作。也许你可以试试?它位于:jsfiddle.net/disgeae/DtK39/29 on "if ($("#CertificaatTypes div ul > li:first").is('#current')) {"
    • 好吧,选择器确实有效。如果你在其中放置一个 alert() ,它就会正确地发出警报。
    • 我不知道如何重构它.. :( 我只是一个 jQuery 菜鸟。知道为什么 div 没有显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2012-09-17
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多