2012-08-22 102 views
1

你好,我有這個html結構。奇怪的包含(*)jQuery選擇器

<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?

+0

這是屬性包含選擇器[jQuery的文檔 - 屬性包含選擇器(http://api.jquery.com/attribute-contains-selector/) –

回答

2

一個jQuery的結果選擇器($('div)等)將永遠是一個jQuery對象。要將其轉換爲是否存在任何結果的布爾值,請檢查length屬性。除0以外的任何內容都是正確的。

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

你也不需要:收音機後。

http://jsfiddle.net/sfkkh/

+0

1關於結腸良好的漁獲。 – pimvdb

2

你假設一個空的jQuery對象(沒有匹配的元素)會產生你false和非空的一個true。這不是真的 - 一個jQuery對象總是「某種東西」。你想檢查是否它是空的。改爲使用$(...).length > 0(它給你一個布爾值 - 不需要三元運算符)。

6

即使選擇器匹配零個元素,jQuery調用總是返回一個jQuery對象。

檢查jQuery對象的長度,看它是否匹配任何東西:(正如Plutor指出的,結腸不應該在選擇器)

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