我如何使用jQuery / JavaScript检测特定DOM元素的给定
JavaScript(简称JS)
data-*
属性是否具有空字符串值?常见的比较运算符似乎无法正常工作,如下面的示例所示。我可能接近:检查没有值的HTML5数据属性或默认情况下设置数据HTML5值,但这些答案都不符合这个问题。HTML:<ul class="list">
<li class="list--item" data-id="x6gftcc-44">First entry</li>
<li class="list--item" data-id="">Last entry</li>
</ul>
<div class="message"></div>
一些CSS
.list{
list-style-type: none;
}
.list--item{
display: inline-block;
min-width: 200px;
padding: 20px;
border: 1px solid rgb(60,64,73);
cursor: pointer;
}
.message{
display: none;
}
.message.active{
display: block;
}
.true{
color: green;
}
.false{
color: red;
}
JavaScript(简称JS)
$(document).ready(function(){
$('.list--item').click(function(event, target){
function hasId(){
if ($(this).data('id') != ''){
return true;
}
else{
return false;
}
};
var entry = {
id: $(this).data('id'),
hasId: hasId()
};
if (entry.hasId){
$('.message').addClass('active true');
$('.message').text('Picked entry ID: ' + entry.id);
}
else{
$('.message').addClass('active false');
$('.message').text('Entry ID not available');
}
})
});
示例可在CodePen查看。
data
。如果您只是访问属性值,请使用attr
。data
不仅仅是data-*
属性的访问器,它还有很多其他功能,并且具有开销。 - T.J. Crowderdata-*
属性的访问器。它用于管理jQuery的内部数据存储,只有从data-*
属性中初始化时才会引起它。仅将其用作访问器以获取属性值并不是正确的用法,这会使jQuery做额外的工作并消耗额外的内存。它还会导致混淆,因为data
从不设置data-*
属性。 - T.J. Crowder