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类,如果必须这样做的话。

http://jsfiddle.net/ysUMs/2/

尝试以下选择器:

 $("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');