有没有人可以解决这个问题?关于: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'});
答案 0 :(得分:1)
这是因为这些属性和<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>
答案 1 :(得分:0)
我发现了问题。属性名称不能以数字开头。因此,属性的第一个字符必须是字符串或下划线。
$('product[456s0s0]').removeAttr('456s0s0').attr('f456s0s1','');
$('product[456s0s1]').css({'background-color':'#cfc'});
答案 2 :(得分:0)
attr似乎不能以数字开头。
HTML解析器(至少在Chrome中)看起来相当宽容,并且将接受无效的属性名称。但是,然后尝试通过脚本添加新的无效服装会导致此错误(再次在Chrome中)无法在“元素”上执行“ setAttribute”:“ 456s0s1”不是有效的属性名称。 – < em> Peter B