1

你好我有这个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);

但是为什么这总是返回 true?

4

3 回答 3

6

jQuery 调用总是返回一个 jQuery 对象,即使选择器匹配零个元素。

检查 jQuery 对象的长度以查看它是否匹配任何内容:

var isChecked = $('.yleis span.radio[style*="-50"]').length > 0;

(正如 Plutor 所指出的,冒号不应该在选择器中。)

于 2012-08-22T12:35:31.923 回答
2

jQuery 选择器($('div)等)的结果将始终是一个 jQuery 对象。要将其转换为是否存在任何结果的布尔值,请检查长度属性。0 以外的任何值都是正确的。

var isChecked = $('.yleis span.radio[style*="-50"]').length ? true : false;

您也不需要 : 在收音机之后。

http://jsfiddle.net/sfkkh/

于 2012-08-22T12:36:22.890 回答
2

你假设一个空的 jQuery 对象(没有匹配的元素)会产生你false和一个非空的对象true。这不是真的 - 一个 jQuery 对象总是“某物”。您想检查它是否为空。改用$(...).length > 0(它给你一个布尔值 - 不需要三元运算符)。

于 2012-08-22T12:34:48.477 回答