jQuery:如何在这里选择具有特定类的元素?
HTML是这样的:
span1 span2 span3 span4 span5 span6 span7 span8 span9
现在,使用jQuery,我将如何仅更改具有类position
+ SomeINTEGER的元素的backgroundColor ?
我想选择具有类poistion
+ TheRespectiveInteger的所有元素
我假设您想要更改具有匹配该模式的类的所有元素的背景 – 而不仅仅是针对一个特定数字。
通过将class
视为另一个属性并对值进行部分匹配,可能有一种hacky方法。
但是,更好的解决方案是添加另一个可以选择的类。 也许有什么是添加positionX
类也同时添加一个positioned
类。
试试这个:
$('.someClass').filter(function () { return /(\s|^)position[0-9]+(\s|$)/.test(this.className); }).css('background-color', 'silver');
工作小提琴
你可以修改正则表达式来获得完美的结果:)
$(".someClass").each(function(){ var classes = $(this).attr('class').split(/\s+/); for (var i = 0; i < classes.length; ++i) { if (classes[i].match(/^position\d+$/i)) { $(this).css('background-color', 'red'); } } });
对于任何包含一个类为positionN
元素,其中N
是任何整数以及someClass
类,如果必须这样做的话。
尝试以下选择器:
$("span:regex(class, (\s|^)position[0-9]+(\s|$))").css("background-color", "Green");
有关更多参考,请参阅编写jquery选择器以选择具有特定模式的类
对于regex
选择器,您需要编写以下代码行:
jQuery.expr[':'].regex = function(elem, index, match) { var matchParams = match[3].split(','), validLabels = /^(data|css):/, attr = { method: matchParams[0].match(validLabels) ? matchParams[0].split(':')[0] : 'attr', property: matchParams.shift().replace(validLabels,'') }, regexFlags = 'ig', regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags); return regex.test(jQuery(elem)[attr.method](attr.property)); }
James Padolsey给出了这个精彩的实现 。
见工作实例: http : //jsfiddle.net/Q7fTW/16/
你也可以试试这个:
$(".position" + someINTEGER).css('backgroundColor','your color');
编辑 :
你问这个问题的方式很混乱。
要识别具有类位置+整数的元素,您需要为它们指定另一个类以进行标识
span1 span4 $(".integerclass).css('backgroundColor','your color');
试试这个
它正在工作
$('[class^="someClass position"]').css({ 'background-color': 'red' }) //Selects elements that have the specified attribute with a value beginning exactly with a given string.
要么
$('[class*="position"]').css({ 'background-color': 'red' }) //Selects elements that have the specified attribute with a value containing the a given substring.
要么
$('[class^="someClass"][class*=" position"]').css({ 'background-color': 'red' }) //Matches elements that match all of the specified attribute filters.
refrence
http://api.jquery.com/category/selectors/attribute-selectors/
var n =10; $(".someClass position"+n).css("background-color","#b0c4de");
如果您知道SomeINTEGER的值,那么使用:
$(".position" + SomeINTEGER).css('backgroundColor','red');
否//这表明从“位置”开始
$('span[class^=position]).css('backgroundColor','red');