我有一个查询,我填充菜单和过滤项目,以便有我的代码
function completeGalleryCat(data, target, eng) {
var items = data.d.results;
var prefix = "";
var sufix = "<div class='clear'></div>";
if (eng)
prefix = "<div class='filter selected' data-category='cat-all'>All</div>";
else
prefix = "<div class='filter selected' data-category='cat-all'>Todas</div>";
var menu = "";
var cat = "";
for (var item in items) {
if (eng)
cat = items[item].English;
else
cat = items[item].Title;
menu += "<div class='filter' data-category='" + cat.replace(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";
}
$(target).html(prefix + menu + sufix);
}
所以,正如你所看到的,我用下划线替换空格,如:
menu += "<div class='filter' data-category='" + cat.replace(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";
问题在于我有3个短语,如
<div class="filter" data-category="Transporting_of Materials">Transporte de Materiales</div>
正如您所见,data-category="Transporting_of Materials"
提前谢谢
答案 0 :(得分:3)
在第一次替换调用中全局替换带下划线的空格。
var title = 'Transporting of Materials';
console.log(title.replace(/\s/g, "_").replace(/[^\w\s]/gi, ''));
&#13;
答案 1 :(得分:0)
您需要使用正则表达式来实现这一目标。在JS中,replace()函数仅适用于出现。
所以你的代码将如下所示。
menu += "<div class='filter' data-category='" + cat.replaceAll(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";
String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.replace(new RegExp(search, 'g'), replacement);
};
您还可以在以下任务中找到更多信息。 How to replace all occurrences of a string in JavaScript?