在 jQuery 裡,如果想要知道 checkbox 有幾個被選取,可以使用
$("input:checked").size()
但我發現這方法,適用於 IE、Firefox、Chrome ,卻不適用 Opera 瀏覽器。我試著用一段測試程式如下:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script> function DoCheck() { alert($("input:checked").size()); } </script> </head> <body> <form id="form1" runat="server"> <input type="button" id="btn" value="check" onclick="DoCheck();" /> <div> <input id="cb1" type="checkbox" name="cb" />111 <br /> <input id="cb2" type="checkbox" name="cb" />222 <br /> <input id="cb3" type="checkbox" name="cb" />333 <br /> </div> </form> </body> </html>
在 Opera 測試時,任意更改 checkbox 的選取組合,會發現 alert($("input:checked").size()); 所得到的結果,竟然會出錯,一開始還以為自己眼花,但沒想到是真的。在 jQuery 的 BUG TRACKER,可以看到目前已經有人提出同樣的問題了。
慶幸的,是目前還有一個各個瀏覽器都還支援的寫法:
$("input").filter(":checked").size()
所以,在 jQuery 尚未提出修正之前,還必須先以 .filter() 的方式來取代。
Opera 版本:11.62
jQuery 版本:1.7.2
沒有留言:
張貼留言