按类前缀定位元素

发布于 2024-11-08 05:38:45 字数 317 浏览 0 评论 0 原文

假设我有如下元素:

<div class="home">
  <div class="tab231891230"></div>
  <div class="tab121232441"></div>
  <div class="tab123134545"></div>
</div>

如何使用 jQuery 选择具有以 "tab" 开头的类的 div 元素?

Suppose I have the elements as below:

<div class="home">
  <div class="tab231891230"></div>
  <div class="tab121232441"></div>
  <div class="tab123134545"></div>
</div>

How can I use jQuery to select the div elements that have the class starting with "tab"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一场信仰旅途 2024-11-15 05:38:45

它称为属性以选择器开头。我的示例在元素上设置红色文本颜色:

$('[class^="tab"]').css('color', 'red');

jsFiddle 演示

请注意,如果元素有多个类,而另一个类在包含 tab 的元素 (class="nyedva tab231891230") 之前,该选择器不会选择该元素。

如果您想选择这些,您可以使用以下示例:

$('.home div').filter(function () {
    return this.className.match(/\btab/);
}).css('color', 'red');

jsFiddle 演示

It is called the Attribute Starts With Selector. My example sets a red text color on the elements:

$('[class^="tab"]').css('color', 'red');

jsFiddle Demo

Please note that if the elements have more than one class and the other precedes the one with tab inside (class="nyedva tab231891230") the element won't be selected by this selector.

If you want to select even these, you can use this example:

$('.home div').filter(function () {
    return this.className.match(/\btab/);
}).css('color', 'red');

jsFiddle Demo

得不到的就毁灭 2024-11-15 05:38:45

如果一个元素中有多个类,请使用它来选择

$("[class*='tab']");

它将与这样的元素一起使用

<div class="home">
<div class="module tab231891230"></div>
<div class="module tab121232441"></div>
<div class="module tab123134545"></div>

参考: jquery属性包含选择器

If you have multiple class inside one element, use this to select

$("[class*='tab']");

It will work with element like this

<div class="home">
<div class="module tab231891230"></div>
<div class="module tab121232441"></div>
<div class="module tab123134545"></div>

Reference : jquery attribute-contains selector

讽刺将军 2024-11-15 05:38:45

您可以这样做:

$('div[class^="tab"]');

请参阅 http://api.jquery.com/attribute -以选择器开头/

You can do it like this:

$('div[class^="tab"]');

See http://api.jquery.com/attribute-starts-with-selector/

幸福丶如此 2024-11-15 05:38:45

首先也是最重要的:尝试始终使用 安全分隔符,例如 - 即:tab-something

按前缀选择类的正确方法是使用两个组合 href="https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors" rel="nofollow noreferrer">属性选择器,^ 开头为*包括

原因是:仅使用: [class^="tab-something"] 这样将仅选择 class="tab-something foo bar"不会 class="foo tab-something bar" 元素 — 给你不稳定的结果。

通过 className 前缀定位元素

JavaScript:

const tabs = document.querySelectorAll('[class^="tab-"], [class*=" tab-"]');

jQuery:

const $tabs = $('[class^="tab-"], [class*=" tab-"]');

CSS:

[class^="tab-"], [class*=" tab-"] {
  /* "tab-" prefixed class styles here */
}

到回顾:
以上将确保同时定位 "tab-aaa foo bar""foo tab-bbb bar"

First and foremost: try always to use a Safe Delimiter like - I.e: tab-something

The proper way to select class by prefix is by using a combination of two Attribute Selectors, the ^ Starts With and * Includes.

The reason being: by using only: [class^="tab-something"] such will select only class="tab-something foo bar" but not class="foo tab-something bar" elements — giving you erratic results.

Target elements by className prefix

JavaScript:

const tabs = document.querySelectorAll('[class^="tab-"], [class*=" tab-"]');

jQuery:

const $tabs = $('[class^="tab-"], [class*=" tab-"]');

CSS:

[class^="tab-"], [class*=" tab-"] {
  /* "tab-" prefixed class styles here */
}

To recap:
the above will make sure to target both "tab-aaa foo bar" and "foo tab-bbb bar"

最丧也最甜 2024-11-15 05:38:45

为什么用那个?该数字,您可以分配给 rel 或 id 属性,如下所示:

<div class="home">
    <div class="tab" rel="231891230"></div>
    <div class="tab" rel="121232441"></div>
    <div class="tab" rel="123134545"></div>
</div>

然后可以在以下位置访问它:

$('div.tab').click(yourhandler);

或者甚至添加当前“tab”类的子类:

<div class="home">
    <div class="tab 231891230"></div>
    <div class="tab 121232441"></div>
    <div class="tab 123134545"></div>
</div>

然后,只需按 jQuery 示例中的“tab”类进行选择多于,
然后对第二类做任何你想做的事情(检查它是否在那里,
删除它)。

检查这些:

http://api.jquery.com/class-selector/

http://api.jquery.com/hasClass/

http://api.jquery.com/addClass/

http:// api.jquery.com/removeClass/

why use that? that number, you can assign to rel or id attribute, like this:

<div class="home">
    <div class="tab" rel="231891230"></div>
    <div class="tab" rel="121232441"></div>
    <div class="tab" rel="123134545"></div>
</div>

then it will be accessible at:

$('div.tab').click(yourhandler);

or even, add a subclass of that current "tab" class:

<div class="home">
    <div class="tab 231891230"></div>
    <div class="tab 121232441"></div>
    <div class="tab 123134545"></div>
</div>

then, just select by "tab" class like in the jQuery example above,
and do whatever you want with the second class (check if it's there,
remove it).

check these:

http://api.jquery.com/class-selector/

http://api.jquery.com/hasClass/

http://api.jquery.com/addClass/

http://api.jquery.com/removeClass/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文