【问题标题】:find the class a better way - jquery找到类更好的方法 - jquery
【发布时间】:2013-10-16 23:08:54
【问题描述】:

我知道我的选择器将有一个级别 1、级别 2、级别 3 的类

我想以此为基础设置关卡,但我的方式感觉有点笨拙?有没有更简洁的方法来做到这一点

if ( $level.hasClass('level-2')) {
    $levelValue= "level2";
}
if( $level.hasClass('level-3')) {
    $levelValue = "level3";
}

if ( $level.hasClass('level-4')) {
    $levelValue= "level4";
}

编辑:对不起我的错误

【问题讨论】:

  • 您真的要为所有课程设置级别为 2 级吗?看起来你犯了一个错误,但如果那是你的意图,我可能是错的......同样在你的问题中,你说它将具有 1 级到 3 级的类,但在代码中它是 2-4 级。你需要哪个?

标签: jquery class jquery-selectors


【解决方案1】:

使用这个:

if($level.is('.level-2, .level-3, .level-4')){
    $level = "level2";
}

这使用 jQuery 的 .is() 函数并检查 $level 是否有任何类。

更新:尝试使用这个:

if($level.is('[class^="level"]')){
    $levelValue = $level.attr('class').match(/level-[0-9]*/); // e.g. 'level-2'
}

它正在运行:http://jsfiddle.net/rE3bL/1/

【讨论】:

  • 可爱 - 非常感谢,我需要在正则表达式方面做得更好。虽然它在我的代码类*="level" 中需要通配符
【解决方案2】:

是否有与每个级别相关的样式规则?如果只是数据,我会使用像 data-level='2' 这样的数据属性,那么您可以使用这个 jQuery 函数来访问它:$level.data('level')

【讨论】:

    【解决方案3】:

    什么是$level?一个div? 如果您想将 $level 设置为“level1”、“level2”和“level3”(而不是像代码中那样每次都设置为“level2”),您可以使用数据属性:

    <div class="level1" data-level="1">
    <div class="level2" data-level="2">
    <div class="level3" data-level="3">
    

    你的 js 是这样的:

    $level = $level.data("level") //will return "1","2" or "3"
    

    【讨论】:

    • 这肯定会工作,但它是一个 drupal 菜单,我无法访问数据属性。
    猜你喜欢
    • 2010-12-22
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2016-12-17
    • 2018-06-25
    • 2016-04-12
    相关资源
    最近更新 更多