jQuery: Select only a class containing a string?
I'm currently using this to get the class for a specific bit of HTML on the page:
$(this).parent("div").attr('class')
But that div
has multiple classes: current_status statu开发者_开发知识库s_billed
My end goal here is to grab the class that starts with status_
and replace it with a different class name.
So using my .parent()
function above, I'm able to select the div I need, but I then need to remove the status_billed
class and replace it with, for example, status_completed
(or a number of other class names).
Select div
s that have the status_billed
class:
$(this).parent('div.status_billed')
Select div
s whose class
attribute contains status_
:
$(this).parent('div[class*=status_]')
That's about the best you'll get with jQuery selectors. You can do better using .filter()
:
$(this).parent('div').filter(function ()
{
var classes = $(this).attr('class').split(' ');
for (var i=0; i<classes.length; i++)
{
if (classes[i].slice(0,7) === 'status_')
{
return true;
}
}
return false;
});
...but I'm not sure why you're doing all this - .parent()
returns at most 1 element. Did you mean .closest()
or .parents()
?
精彩评论