2010-03-29 97 views
1

所以,我有以下幾點:我可以寫這個JQuery語句清理器嗎?

var box = $(".MyCheckBox"); 

if (box[0].checked) 
{ 
    // Do something 
} 
else 
{ 
    // Do something else 
} 

是否有這樣做使用過濾器或什麼更好的辦法?

我知道我可以去:

$(".MyCheckBox") 
    .filter(function(index) { 
     return this.checked; 
    }) 
    .each(function() { 
     // do something 
    }); 

但我需要做else語句的東西......這樣做的更簡單的方法?謝謝!

回答

5

您可以使用內置的:checked選擇:

$(".MyCheckBox:checked").each(function() { 
    //Do something with checked ones.. 
}); 
$(".MyCheckBox:not(:checked)").each(function() { 
    //Do something with unchecked ones.. 
}); 
在每個類似

或過濾器,以你擁有的一切:

$(".MyCheckBox").each(function() { 
    if($(this).is(":checked")) { 
    //Do something with checked ones.. 
    } else { 
    //Do something with unchecked ones.. 
    } 
}); 

或者,如果說你想切換一個班級,然後使用不同的方法,這將給active類的檢查:

$(".MyCheckBox").each(function() { 
    $(this).toggleClass("active", $(this).is(":checked")); 
}); 

更新
根據意見,如果你想只是原始速度:

$(".MyCheckBox").each(function() { 
    if(this.checked) { 
    //Do something with checked ones.. 
    } else { 
    //Do something with unchecked ones.. 
    } 
}); 
+0

我相信使用:checked選擇器比使用attr更快。 – richleland 2010-03-29 21:21:41

+0

:檢查是遠的,比我在測試中的attr慢得多(http://www.jsfiddle.net/CTu7a/) – Matt 2010-03-29 21:27:43

+0

只是做這個.checked? – Polaris878 2010-03-29 21:30:52

5

attr('checked')無論如何返回第一個元素的檢查值,所以沒有[0] malarky。

if ($(".MyCheckBox").attr('checked')) { 
// Do something 
} else { 
// else 
} 
2

我會去與尼克的上述更新的答案,而是想建議你完成你的選擇。即

$('input.myCheckBox').each(function(){ 
    // tralalala... 
} 

......只是爲了讓你的初始jQuery選擇更快一點。我的意思是,因爲我們正在爭論速度和所有。^_^

相關問題