Javascript jQuery从字符串中替换字符的方法
我有一个生成的导航,前n个项目前面有Javascript jQuery从字符串中替换字符的方法,javascript,jquery,html,Javascript,Jquery,Html,我有一个生成的导航,前n个项目前面有。,始终位于列表的顶部。我现在想要完成的是从站点前端删除。 我尝试使用下面的jQuery代码来实现这一点,它几乎可以工作,但它也改变了其他导航项的文本 请参阅JS Fiddle上的完整标记: 代码: $(function() { $('.dropdown-submenu').html($('.dropdown-submenu').html().replace(/\_/g,'')); }); 您需要使选择器更具体。给它一个唯一的类或ID,然后根据它进行选择
。
,始终位于列表的顶部。我现在想要完成的是从站点前端删除。
我尝试使用下面的jQuery代码来实现这一点,它几乎可以工作,但它也改变了其他导航项的文本
请参阅JS Fiddle上的完整标记:
代码:
$(function() {
$('.dropdown-submenu').html($('.dropdown-submenu').html().replace(/\_/g,''));
});
您需要使选择器更具体。给它一个唯一的类或ID,然后根据它进行选择
<ul class="dropdown-submenu my-custom-menu">
注意:您使用的
id
s不正确,因为它们是全局唯一的。您不应该多次使用id=“row”
。这就是类的用途。您需要使选择器更加具体。给它一个唯一的类或ID,然后根据它进行选择
<ul class="dropdown-submenu my-custom-menu">
注意:您使用的
id
s不正确,因为它们是全局唯一的。您不应该多次使用id=“row”
。这就是类的用途。因此,基本上您只希望删除锚定中的下划线,这些下划线是的直接子级。下拉子菜单
?
在小提琴中,将$('.dropdown submenu')
替换为$('.dropdown submenu>a')
JSFiddle:
编辑:
在你的回答之后,问题就清楚了。为了防止您的
全部成为软件一体,您需要循环所有要替换的元素,如下所示:
$(function() {
$('.dropdown-submenu > a').each(function(i, el) {
$(el).html($(el).html().replace(/\_/g,''));
});
});
JSFiddle:
所以基本上您只想删除锚定中的下划线,这些下划线是
的直接子菜单?
在小提琴中,将$('.dropdown submenu')
替换为$('.dropdown submenu>a')
JSFiddle:
编辑:
在你的回答之后,问题就清楚了。为了防止您的
全部成为软件一体,您需要循环所有要替换的元素,如下所示:
$(function() {
$('.dropdown-submenu > a').each(function(i, el) {
$(el).html($(el).html().replace(/\_/g,''));
});
});
JSFiddle:
您可以将重载与提供现有html的函数一起使用:
$('.dropdown-submenu').html(function(index, html) { return html.replace(/\_/g,''); });
更新小提琴:
或者,您可以在每条记录上循环:
$('.dropdown-submenu').each(function() {
$(this).html($(this).html().replace(/\_/g,''));
});
您可以将重载与提供现有html的函数一起使用:
$('.dropdown-submenu').html(function(index, html) { return html.replace(/\_/g,''); });
更新小提琴:
或者,您可以在每条记录上循环:
$('.dropdown-submenu').each(function() {
$(this).html($(this).html().replace(/\_/g,''));
});
您可以将其更改为在锚上循环
$(function() {
$('.dropdown-submenu > a').each(function() {
$(this).text($(this).text().replace(/\_/g, ''));
});
});
您可以将其更改为在锚上循环
$(function() {
$('.dropdown-submenu > a').each(function() {
$(this).text($(this).text().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,你可以为此编写一个小插件 简单地替换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,你可以为此编写一个小插件 必须使用jQuery each函数使用.dropdown子菜单类遍历每个元素,以便一次只影响一个元素。您的JavaScript代码如下所示
$(".dropdown-submenu").each(function() {
//this is the current .dropdown-submenu element
$(this).html($(this).html().replace(/\_/g,''));
});
必须使用jqueryeach函数使用.dropdown子菜单类遍历每个元素,以便一次只影响一个元素。您的JavaScript代码如下所示
$(".dropdown-submenu").each(function() {
//this is the current .dropdown-submenu element
$(this).html($(this).html().replace(/\_/g,''));
});
你需要什么?您的代码按预期工作。“其他导航项目”需要用ID或不同的类名来标识,因此您只能替换所需导航上的
。@MarcspérezGude如果您查看输出,您将看到,“软件一”和“软件二”现在都显示为“软件一”更换后,软件一
和软件二
的混合问题很容易解决。您将直接替换为jQuery生成的自动循环。如果您使用自己的循环并使用$(this)
获取当前元素,问题就会消失。请参阅@Turv的答案。我投赞成票。这正是我在最后的评论中告诉你的。你需要什么?您的代码按预期工作。“其他导航项目”需要用ID或不同的类名来标识,因此您只能替换所需导航上的
。@MarcspérezGude如果您查看输出,您将看到,“软件一”和“软件二”现在都显示为“软件一”更换后,软件一
和软件二
的混合问题很容易解决。您将直接替换为jQuery生成的自动循环。如果您使用自己的循环并使用$(this)
获取当前元素,问题就会消失。请参阅@Turv的答案。我投赞成票。这正是我在上次评论中告诉你的。明白了。但是我忘了提到我不能控制类/ID的生成。这是使用CMS am自动生成的。SparkPay是特定的。如果您只想更改单个项目,则会使用ID。在这种情况下,OP已经正确地使用一个类来选择所有相关元素。