2012-10-23 39 views

回答

5

這將工作正常,但您的標記無效的小提琴。這裏有一個fixed version

<table> <!-- You didn't have a `table` or `tr` element --> 
    <tr> 
     <td class="para"> 
      <div id="TripSet" class="rounded-corner-region" style="display: none;"> 
      <div id="DriverSet" class="rounded-corner-region" style="display: none;"> 
      <div id="TimeSet" class="rounded-corner-region" style="display: block;"> 
      <div id="Loading" class="borderless-region" style="display: none;"> 
     </td> 
    </tr> 
</table>​ 

沒有tabletr元素,瀏覽器會盡力來解釋您的標記,並最終只取下td(在Chrome中至少),這意味着你選擇的.para部分可以不再匹配。


編輯

它看起來像Chrome瀏覽器(最有可能的人太多,但我沒有測試過)是很樂意爲您省去tr元素,只要有一個table元素。它會自動在您的td元素周圍添加tbodytr

+0

好的。忘記添加表和tr後,我粘貼我的代碼。 – Mario

+0

我的問題是這個解決方案在我的頁面中不起作用,雖然沒有缺失標籤。我總是得到一個「未定義」。 – Mario

+0

@Mario - 你可以在更新的小提琴中看到它*應該*工作。代碼中的其他內容必須導致此問題。你是否在DOM準備好的事件處理程序中運行它? –

1

$('.para div:visible').attr("id")應該工作。

+0

更正。以前的版本不正確。 – techfoobar

+0

雖然這有效(在我看來是更好的解決方案),但它並沒有真正回答這個問題,因爲爲什麼選擇style屬性不起作用。但正如我所說,更好的解決方案恕我直言。 :) – Simon

+0

此解決方案只適用於divs爲空的情況。在我的頁面中,這些div不是空的,或者不明白這裏的描述http://api.jquery.com/visible-selector/錯誤。 – Mario

0

不能在選擇器中可靠地使用樣式屬性。有些瀏覽器會使屬性值保持不變,而其他瀏覽器則會使值正常化。

在IE8例如,讀取屬性值給你"display: block"而非"display: block;",但你不能用一個選擇與[style="display: block"](或[style="display: block;"])找到的元素。