jQuery替换字符串字符的方法
jQuery way to Replace character from a string
我有一个生成的导航,前n个项目有_
在他们前面,总是在列表的顶部。我现在要做的是把_
从网站前端移除。
我试着用下面的jQuery代码这样做,几乎工作,但它也改变了其他导航项的文本。
查看JS Fiddle的完整标记:https://jsfiddle.net/1fz661o4/
代码:$(function() {
$('.dropdown-submenu').html($('.dropdown-submenu').html().replace(/'_/g,''));
});
您可以将其更改为在锚点上循环。
$(function() {
$('.dropdown-submenu > a').each(function() {
$(this).text($(this).text().replace(/'_/g, ''));
});
});
https://jsfiddle.net/utk12jdt/1/所以基本上你想只删除锚的下划线是.dropdown-submenu
的直接子?在您的小提琴中,将$('.dropdown-submenu')
替换为$('.dropdown-submenu > a')
。
JSFiddle: https://jsfiddle.net/26qLofz8/
$(function() {
$('.dropdown-submenu > a').html($('.dropdown-submenu > a').html().replace(/'_/g,''));
});
编辑:经过你的回答,现在问题很清楚了。为了防止你的
<li>
变成软件,你需要循环所有你想要替换的元素,像这样:
$(function() {
$('.dropdown-submenu > a').each(function(i, el) {
$(el).html($(el).html().replace(/'_/g,''));
});
});
JSFiddle:https://jsfiddle.net/n7ms67k0/
您可以将.html()
重载与提供现有html:
$('.dropdown-submenu').html(function(index, html) { return html.replace(/'_/g,''); });
更新小提琴:https://jsfiddle.net/1fz661o4/2/
或者,您可以遍历每个记录:
$('.dropdown-submenu').each(function() {
$(this).html($(this).html().replace(/'_/g,''));
});
简单地替换HTML将删除任何事件侦听器,并且如果将来在URL中有带下划线的链接等,也可能导致问题。
您应该做的是遍历元素并更改文本节点的值。我不确定如何在jQuery中可靠地做到这一点,但下面是使用普通JavaScript DOM的方法。
function replaceUnderscore(index, el) {
switch (el.nodeType) {
case 3: // text node
el.nodeValue = el.nodeValue.replace(/_/g, '');
break;
case 1: // normal element
for (var i = 0, child; child = el.childNodes[i]; i++) {
replaceUnderscore(i, child);
}
break;
}
}
要将此应用于jQuery中的元素,只需执行
$('.class').each(replaceUnderscore);
没有测试,但我认为这应该有效。
也就是说,你必须在JavaScript中做这个吗?理想情况下,这种操作应该在服务器端执行。如果它是一个CMS,你可以为此目的编写一个小插件。
你需要让你的选择器更具体。要么给它一个唯一的类,要么给它一个ID,然后根据它进行选择。
<ul class="dropdown-submenu my-custom-menu">
jQuery会变成:
$(function() {
var menu = $('.my-custom-menu'); // save the query since we use it twice
menu.html(menu.html().replace(/'_/g,''));
});
注意:您使用id
s不正确,因为它们是全局唯一的。你不应该多次使用id="row"
。这就是类的作用
您必须使用jQuery each函数使用.dropdown-submenu类遍历每个元素,这样您一次只能影响一个元素。你的JavaScript代码看起来像这样:
$(".dropdown-submenu").each(function() {
//this is the current .dropdown-submenu element
$(this).html($(this).html().replace(/'_/g,''));
});
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 使用jQuery.css()方法时,是否需要转义任何字符
- JavaScript意外的令牌<,有什么方法可以逃避错误(或至少跳过那些无用的字符)
- 有没有一种方法可以让javascript不计算特定的字符
- 使用JS找出字符串中字符重复的最简单方法是什么
- 通过字符串最有效的方法是什么;s字符
- 在附加方法jquery validate中为特殊字符使用regex
- 是否有一种方法可以从encodeURIComponent中排除某些字符
- 任何匹配模式的方法,要么在某个字符之前,要么在某个字符之后
- 检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法
- 将字符串解析为一系列转义十六进制字符的方法是什么
- 将ascii字符发送到mailto而不达到URL限制的最有效方法
- (仅在IE中)SCRIPT65535:对方法或属性访问的意外调用.主.js,第 152 行字符 28
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 为什么.replace 方法使用正斜杠字符将第一个参数括起来
- 在 url 中编码特殊字符的最佳方法
- 分机.js确认方法添加新行字符
- 对 URI 组件非 utf-8 字符进行编码并相应地解码它们的正确方法是什么
- 在 JavaScript 字符串数组中获取相邻字符的最佳方法是什么?
- 使用atob()方法时出现无效字符错误