我正在创建一个在线商店,其中包含指向产品的特定链接例如(http://example.com/products/phones/nexus-5)。
我使用以下代码,
var get_product_availability_classname = $("[class$='_availability']").attr('class');
选择(创建值为的变量)具有以" _availability"结尾的类的元素。
每个产品页面在_availability
之前都有不同的文字,例如GOOGLENEXUS5_availability
,SAMSUNG4KTV_availability
,whatever_availability
......
我现在必须做的是基本上删除我用来获得整个班级名称的标准(即 class$='_availability'
);使用上面的示例,可以将其从SAMSUNG4KTV_availability
修剪为SAMSUNG4KTV
。
我还没想过怎么做,但我们可以使用JavaScript的substring()或substr()。
答案 0 :(得分:1)
使用attr()
方法进行回调,并使用String#replace
方法使用word boundary regex更新类名。
虽然使用attribute contains selector,因为有可能有多个类,在这种情况下,类可以在开始时或两个类之间。
var get_product_availability_classname = $("[class*='_availability '],[class$='_availability']");
get_product_availability_classname.attr('class',function(i,v){
return v.replace(/_availability\b/g,'');
});
var get_product_availability_classname = $("[class*='_availability '],[class$='_availability']");
get_product_availability_classname.attr('class', function(i, v) {
return v.replace(/_availability\b/, '');
});
console.log(document.body.innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="abc_availability"></div>
<div class="abc_availability class"></div>
<div class="class abc_availability"></div>
<div class="class abc_availability class1"></div>
答案 1 :(得分:1)
如果类名中只有一个_
var get_product_availability_classname = $("[class$='_availability']").attr('class')
.split(' ') // split the class to individual classes
.filter(function(cls) { // filter ones with _availability
return cls.split('_').pop() == 'availability');
})[0]; // use first match
var product = get_product_availability_classname.split('_')[0]
.split('_')
创建数组["PRODUCT", "availability"]
,[0]
选择此数组的第一项
或者你也可以
var product = get_product_availability_classname.split('_availability')[0]
这会做同样的事情,除了它在字符串_availability
上拆分,并且前缀中有多少_
无关紧要
答案 2 :(得分:1)
在这种情况下,最好使用正则表达式。以下将在类字符串中查找_availability,如果找到它,它将捕获之前的内容。
var get_product_availability_classname = $("[class$='_availability']").attr('class');
var matches = /([^\s]*)_availability\b/g.exec(get_product_availability_classname)
if(matches.length > 1){
var your_id = matches[1];
}
答案 3 :(得分:0)
如果您的字符串始终采用x_y格式,其中x和y不包含下划线,则可以使用split函数拆分下划线。
var str = "SAMSUNG4KTV_availability";
var result = str.split("_")[0];
console.log(result);
split函数返回一个字符串数组,其中包含每个下划线之间的子字符串,使用[0]选择数组中的第一个元素。