你好,我有这个html结构。
<span class="radio" style="background-position: 0px 0px; "></span>
我只想检查样式更改为
时的状态<span class="radio" style="background-position: 0px -50px; "></span>
所以我猜这段代码会匹配:
var isChecked = $('.yleis span.radio[style*="-50"]')?true:false;
console.log(isChecked);
但为什么总是这样呢?
答案 0 :(得分:6)
jQuery调用总是返回一个jQuery对象,即使选择器匹配零元素。
检查jQuery对象的长度,看它是否匹配任何东西:
var isChecked = $('.yleis span.radio[style*="-50"]').length > 0;
(正如Plutor所说,冒号不应该在选择器中。)
答案 1 :(得分:2)
您假设一个空的jQuery对象(没有匹配的元素)会产生false
和一个非空的true
。这不是真的 - 一个jQuery对象总是“东西”。你想检查它是否为空。改为使用$(...).length > 0
(这会给你一个布尔值 - 不需要三元运算符)。
答案 2 :(得分:2)
jQuery选择器($('div)
等)的结果将始终是一个jQuery对象。要将此转换为是否存在任何结果的布尔值,请检查length属性。除0以外的任何东西都是真的。
var isChecked = $('.yleis span.radio[style*="-50"]').length ? true : false;
你也不需要:收音机后。