我有以下div:
<div class="row hide alert-danger text-center h4 alert"
id="test 123" data-for="862">
Some Text.
</div>
当我写这篇文章时:$('#test 123').hasClass('hide')
我仍然在变假。
有线索吗?提前谢谢。
根据html4和html5标准,其中不能有空格。
我不鼓励您使用此解决方案,但您可以使用属性相等选择器作为变通方法:
$('[id="test 123"]').hasClass('hide')
将其更改为
<div class="row hide alert-danger text-center h4 alert"
id="test-123" data-for="862">
Some Text.
</div>
然后$('#test-123').hasClass('hide')
应该按预期工作。
jQuery表示空格指定了另一个选择器的开始。所以它寻找一个<123>元素中带有id#test 的元素
选择器现在的工作方式是在div#测试中搜索123。要么将其更改为仅测试,要么更改为test_123。
更好的编码方法,我们应该遵循编码的规则和约定,我们必须设置没有空格的DOM元素id,您需要将id更改为test_123(没有空格)
在CSS和jQuery选择器中,空间是子组合子。选择器#test 123
匹配"<123>
类型的元素,这些元素是具有id="test"
的元素的后代"。
此外,HTML规范中说(关于ID属性):
该值不能包含任何空格字符。
因此:
- 将您的ID更改为有效ID
- 更改选择器以匹配
例如:
id="test-123"
'#test-123'
你可以试试这个:
<div class="row hide alert-danger text-center h4 alert"
id="test 123" data-for="862">
Some Text.
</div>
jquery
$( "#test 123" ).hasClass( "hide" )