DA. DA. - 4 years ago 140
jQuery Question

Using 'starts with' selector on individual class names

If I have the following:

<div class="apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>


I can use the following selector to find the first two DIVs:

$("div[class^='apple-']")


However, if I have this:

<div class="some-other-class apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>


It will only find the second DIV, since the first div's class is returned as a string (I think) and doesn't actually start with 'apple-' but rather 'some-'

One way around that is to not use starts with, but instead contains:

$("div[class*='apple-']")


The problem with that is it will also select the 3rd DIV in my example.

Question: Via jQuery, what is the proper way to use predicate selectors on individual class names, rather than the entire class attribute as a string? Is it just a matter of grabbing the CLASS, then splitting it into an array and then looping through each individual one with regex? Or is there a more elegant/less verbose solution?

Answer Source

Classes that start with "apple-" plus classes that contain " apple-"

$("div[class^='apple-'],div[class*=' apple-']")
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download