【问题标题】:jQuery check if any div on page has specific class in an if statementjQuery检查页面上的任何div是否在if语句中具有特定的类
【发布时间】:2013-09-17 21:19:20
【问题描述】:

我正在使用 Bootstrap 开关 https://github.com/nostalgiaz/bootstrap-switch,并且在表格中有几个开关。

当切换开关时,我会检查开关的状态并有一个基本的 if 条件。当 data.value 为 false 时,开关已关闭。我尝试运行另一个条件来检查表中的任何开关是否具有switch-on 类,如果是,则在高图表中隐藏一系列。这没有按预期工作。我很确定我的选择器没问题 div.make-switch > div 正在选择第一个嵌套 div,它的类为 switch-onswitch-off

代码有什么问题?我的第二个 if 条件不应该在每次关闭开关时触发并检查是否有任何开关打开吗?

谢谢

on 和 off 状态渲染的 HTML 如下,

if(data.value == true){
// Switch is on
}
else if (data.value == false){
// Switch is off

    if ($('div.make-switch > div').hasClass('switch-on')){

        series.hide();
    }
}

关闭状态在嵌套 div 中有类 .switch-off

<div class="make-switch switch-mini has-switch"><div class="switch-off switch-animate"><input name="" id="create-switch" type="checkbox"><span class="switch-left switch-mini">ON</span><label class="switch-mini" for="create-switch">&nbsp;</label><span class="switch-right switch-mini">OFF</span></div></div>

On 状态在嵌套 div 中有类 .switch-on

<div class="make-switch switch-mini has-switch"><div class="switch-on switch-animate"><input name="" id="create-switch" type="checkbox"><span class="switch-left switch-mini">ON</span><label class="switch-mini" for="create-switch">&nbsp;</label><span class="switch-right switch-mini">OFF</span></div></div>

【问题讨论】:

    标签: jquery if-statement


    【解决方案1】:

    试试这个:

    if ($('div.make-switch > div.switch-on').length) {
    

    如果存在与选择器匹配的元素,length 属性将返回“真实”结果。

    【讨论】:

    • OP 的代码有何不同:if ($('div.make-switch &gt; div').hasClass('switch-on')) ?
    • @A.Wolff 我也很好奇为什么我的代码不能正常工作。 Jason P 这确实有效,我会尽快将其标记为答案
    • @A.Wolff 好点,他的代码有效:jsfiddle.net/8VEQ7。我最初假设 hasClass 检查了集合中的第一项,但看起来这是一个错误的假设。
    • @JasonP .hasClass() 如果至少有一个元素匹配选择器,则返回 true, .is() 的工作方式相同。这肯定会令人困惑
    猜你喜欢
    • 2012-08-18
    • 2023-03-12
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    相关资源
    最近更新 更多