首页 > 解决方案 > 不工作 $(this).removeAttr('123').attr('456','');

问题描述

有没有人可以解决这个问题?关于:attr(123,'');

例如 attr:123="" 到 456=""

作品:

/* Works */ 
$('product[123s0s0]').removeAttr('123s0s0').attr('abc123','');
$('product[abc123]').css({'background-color':'#cfc'});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p><product 123s0s0 style="background-color: #ccc">123s0s0 to abc123: Works</product></p>
<p><product 456s0s0 style="background-color: #ccc">456s0s0 to 456s0s1: Not</product></p>

不是:

$('product[456s0s0]').removeAttr('456s0s0').attr('456s0s1','');
$('product[456s0s1]').css({'background-color':'#cfc'}); 

标签: jqueryhtmlattr

解决方案


这是因为这些属性和<product />标签本身是非标准的。他们中的任何一个都有效的事实非常幸运。

我建议使用标准 HTML 标记,除非您真的想编写自己的 doctype,以及data存储自定义元数据的属性。尝试这个:

$('span[data-123s0s0]').removeAttr('data-123s0s0').attr('data-abc123','');
$('span[data-abc123]').addClass('foo');

$('span[data-456s0s0]').removeAttr('data-456s0s0').attr('data-456s0s1','');
$('span[data-456s0s1]').addClass('foo');
span { background-color: #CCC; }
.foo { background-color: #CFC; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p><span data-123s0s0>123s0s0 to abc123: Works</span></p>
<p><span data-456s0s0>456s0s0 to 456s0s1: Works</span></p>


推荐阅读