2011-01-12 80 views
0

我在某些代碼中遇到了這種語法,它在IE8中破解,但在其他代碼中工作,任何線索都在做什麼。Jquery選擇器語法

$(this.handle()).find("[id]:visible:enabled"); 

我認爲這可能會尋找搜索在當前頁面中的所有元素的ID,然後搜索屬性所產生的元素「可見」和「啓用」,但我不這麼認爲了。 當我搜索「可見」或「啓用」時,IE8中的開發人員工具不顯示任何結果!

返回在IE8中失敗。

+1

什麼是`this.handle()`? – 2011-01-12 15:32:59

+1

*我認爲它可能正在尋找當前頁面中的所有元素* - nope,這將是`$(「[id]:visible:enabled」)`。調用`find`只會搜索你所謂的`find`,而不是整個頁面。 – 2011-01-12 15:46:17

回答

0

this.handle()確實會返回一些有效的信息,$(this.handle())是一個jQuery對象。查找可用。該查詢在Chrome上正常工作,但不在IE8上正常工作。我看到這些選擇器上的文檔現在api.jquery.com/enabled-selectorapi.jquery.com/visible-selector,這真的回答了我的問題。它看起來像JQuery查找方法在瀏覽器上的工作方式不同。這個問題應該可能被引用到jquery本身。

2

該選擇器應該找到id屬性爲visibleenabled的所有子元素。 From this test它似乎正在工作。測試IE8和Chrome。

1

它取決於它運行的環境。什麼是「this」,它有一個叫做「handle」的函數嗎?如果不是,那麼這就是失敗的原因。

對於這個工作this.handle()必須返回的東西的jQuery遍歷,在這種情況下,它返回的所有元素約西亞Rudell已經指出