2011-11-02 34 views
2

我有HTML頁面上有幾個框架。其中一個框架(稱爲Main)包含多個INPUT。jQuery無法看到上下文

當我使用這個:

Main.document.getElementsByTagName('input') 

它工作正常。但後來我嘗試在jQuery中做同樣的事情:

$("input",Main) 
$("input",Main.document) 
$("input",window.Main) 
$("input",window.Main.document) 

所有這些都返回null。我究竟做錯了什麼?

UPDATE $(Main)也返回null。

UPDATE jQuery包含在主框架中。

在基本頁面我有一個行:

<script>$=Main.$;</script> 
+2

嘗試'$(「input」,$(Main))' –

+0

jQuery是否被正確包含在頁面中? –

+0

你的JS控制檯有沒有像「Main is not defined」這樣的東西? –

回答

3

對於選擇器,jQuery不能返回null。很可能你已經加入了錯誤的庫,比如Mootools。你必須在主窗口中包含jQuery。如果$被覆蓋,您仍然可以使用jQuery而不是$來使用jQuery方法。

當您確定您已包含jQuery時,請使用frames.Mainframes["main"]來獲得可讀代碼。當你定義一個名爲Main的變量時,Main不會指向框架。

當框架還包含jQuery時,建議不要使用主框架的jQuery框架,因爲每個窗口的某些設置是不同的。使用:

frames["main"].$("input"); //Use the jQuery method of the frame. 
+0

document.frames [「Main」]。$(「input」)爲空 – MeelStorm

+1

@MeelStorm添加'alert($()。jquery)'。如果它返回'null',那麼你沒有包含jQuery。請參閱我答案的第一段。 –

+0

這是一個衝突!謝謝!我只是使用Main.jQuery.noConflict();然後使用Main.jQuery而不是Main $ – MeelStorm

0
$(document).ready(function() { 
    $('#frame-id').contents().find('input'); 
}); 

確保您的iframe是目前準備就緒。

+0

$(Main.document)返回null。 – MeelStorm

+0

@MeelStorm,看我的編輯。 – pltvs

+0

沒有任何變化。它鋼無效。 – MeelStorm