【问题标题】:Selecting elements with a class starting with abc [duplicate]选择以 abc 开头的类的元素 [重复]
【发布时间】:2023-04-10 16:00:01
【问题描述】:
$("[class^='stage']").addClass("hidden");

以上隐藏:

<div class="stage1">
<div class="stage2">
<div class="stage1 beep">
<div class="stage2 beep">

但它错过了:

<div class="beep stage1">
<div class="beep stage2">

所以我用过:

$("[class*='stage']").addClass("hidden");

问题是我现在连隐藏:

<div class="beep vastage">
<div class="destagel beep">

如何设计我的选择器,以便它为我带来“包含以 stuff 开头的内容”的内容?

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    你为什么不这样做:

    $('*').filter(function () { 
      return $(this).attr('class') !== undefined ?
                 $(this).attr('class').match(/\bstage\d*\b/g) : false;
    }).hide();
    

    【讨论】:

    • 哇...这很麻烦。当然,它解决了这个问题,但我认为将类名更改为完全不同于其他名称的名称会更好。语法将提高可读性。尽管如此 - 很好的答案! +1
    • 当然这个答案是处理此类问题的最糟糕的方法,因为它会遍历文档的所有元素,它一点也不快,更好的解决方案是更改 HTML 中的某些内容就像@KonradViltersten 所说的那样,使解决方案更快。
    【解决方案2】:

    根据 Jquery 文档 (http://api.jquery.com/attribute-contains-word-selector/),您可以使用以下语法:

    jQuery( "[attribute~='value']" )
    

    选择包含字符串的单词(以空格分隔)...但不是“开头”,只是包含。

    我认为最好的方法是使用javascript indexof来定位你想要的字符串,并检查索引是否为0或前面的字符是否为空格。您需要对所有 html 代码进行循环以检查所有元素...

    【讨论】:

    • 如果我错了,请纠正我,但这并不能解决问题,是吗?
    • 当与类属性一起使用时,这在功能上与类选择器相同,因此不起作用。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多