我必須在目前可見的「para」類中找到div。 我試過了:風格的屬性選擇器不起作用
$('.para div[style="display: block;"]').attr("id")
但它不起作用。
我還寫了爵士小提琴的例子 - >http://jsfiddle.net/JZFgp/3/
我很感激任何提示和解決方案。
馬里奧
我必須在目前可見的「para」類中找到div。 我試過了:風格的屬性選擇器不起作用
$('.para div[style="display: block;"]').attr("id")
但它不起作用。
我還寫了爵士小提琴的例子 - >http://jsfiddle.net/JZFgp/3/
我很感激任何提示和解決方案。
馬里奧
這將工作正常,但您的標記無效的小提琴。這裏有一個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>
沒有table
和tr
元素,瀏覽器會盡力來解釋您的標記,並最終只取下td
(在Chrome中至少),這意味着你選擇的.para
部分可以不再匹配。
編輯
它看起來像Chrome瀏覽器(最有可能的人太多,但我沒有測試過)是很樂意爲您省去tr
元素,只要有一個table
元素。它會自動在您的td
元素周圍添加tbody
和tr
。
$('.para div:visible').attr("id")
應該工作。
更正。以前的版本不正確。 – techfoobar
雖然這有效(在我看來是更好的解決方案),但它並沒有真正回答這個問題,因爲爲什麼選擇style屬性不起作用。但正如我所說,更好的解決方案恕我直言。 :) – Simon
此解決方案只適用於divs爲空的情況。在我的頁面中,這些div不是空的,或者不明白這裏的描述http://api.jquery.com/visible-selector/錯誤。 – Mario
不能在選擇器中可靠地使用樣式屬性。有些瀏覽器會使屬性值保持不變,而其他瀏覽器則會使值正常化。
在IE8例如,讀取屬性值給你"display: block"
而非"display: block;"
,但你不能用一個選擇與[style="display: block"]
(或[style="display: block;"]
)找到的元素。
好的。忘記添加表和tr後,我粘貼我的代碼。 – Mario
我的問題是這個解決方案在我的頁面中不起作用,雖然沒有缺失標籤。我總是得到一個「未定義」。 – Mario
@Mario - 你可以在更新的小提琴中看到它*應該*工作。代碼中的其他內容必須導致此問題。你是否在DOM準備好的事件處理程序中運行它? –