jquery 删除没有值的HTML属性

t9aqgxwy  于 2023-05-06  发布在  jQuery
关注(0)|答案(2)|浏览(134)

我有一个R shiny应用程序,带有R shiny包中的导航栏。**然而,我对输出HTML感兴趣,所以这里不需要R的特定知识。
在此导航栏中跳选选项卡会跳过先前已选择的条目。这是因为当一个标签被选中时,shiny会将class="active"添加到导航栏中该标签的元素中。当你点击标签时,它会带走="active",你只剩下<li class>。根据Is an empty class attribute valid HTML?,这是无效的HTML,这一定是为什么在导航栏中切换会被破坏的原因
我想删除这些没有值的类目标。我尝试使用jquery来实现这一点

$(document).on('hide.bs.tab', (x) => {
    $('*[class!=*]').removeAttr('class');

以在选择新选项卡时删除所有这些目标。然而,我认为这是造成一些额外的混乱,因为其他功能的应用程序现在被打破-预计在这是一个非常蛮力的方法。问题是看到这个HTML是无效的,我不知道如何正确选择它!
如果有人能提出解决这个问题的策略,那就太好了。谢谢!

jv4diomz

jv4diomz1#

使用属性[]选择器来表示 empty class,如下所示:[class=""]

$('[class=""]').removeAttr("class");
[class] {
  background: red;
}
<div class="foo">class="foo"</div>
<div class="">class=""</div>
<div class>class</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>

在纯JavaScript中,你可以这样做:

document.querySelectorAll('[class=""]').forEach(el => el.removeAttribute("class"));
[class] {
  background: red;
}
<div class="foo">class="foo"</div>
<div class="">class=""</div>
<div class>class</div>

而不需要加载整个库。

smtd7mpg

smtd7mpg2#

你可以这样做

<a class="x" id="myid">btn</a>   
 document.getElementById("myid").removeAttribute('class');

相关问题