今天寫了段JQuery選擇器代碼,為了找到Style 中含有display:none的元素,本以為很簡單的事情,但在不同瀏覽器中運行時,就出現了問題。
Html 代碼:
使用下面的選擇器語句在谷歌中正常,但IE中獲取不到正確的結果,懷疑寫法在IE中不兼容,換了各種寫法都不行,網上查找一番,無解。
$("td:not([style*='display:none'])", ".searchDiv")
絕招:分別在不同瀏覽器控制台打印出style屬性,終於找到原因。我只測試了谷歌和IE,其他瀏覽器可自己試驗。
注意他們的區別,一個是注意大小寫,另外要注意冒號后的空格(style='DISPLAY: none')。
其他瀏覽器隨便寫,IE中:
不行:$("td:not([style*='DISPLAY: none'])", this.searchDiv)
正解:$("td", ".searchDiv").not($("td[style='DISPLAY: none']", ".searchDiv"))
IE 7 下仍然有問題,使用jquery的filter() 函數解決。