2010-05-28 84 views
1

我有一個GWT網頁應用程序,有一個幾乎完整的Google地圖窗口。在地圖內部,我擁有包含鏈接的infowindows。我想要做的就是使用jQuery工具疊加層(http://flowplayer.org/tools/overlay/apple.html)打開疊加層並在點擊信息窗口內的鏈接後將其顯示在地圖頂部。使用GWT中的jQuery工具 - 有沒有辦法讓交流?

現在,鏈接源是動態生成的,它託管在不同的服務器上,所以我必須在iframe中打開它並在打開之前設置iframe的源。這似乎很簡單,因爲我只有在頁面上1個IFRAME:

function changeSource(url){ 
     $("#menuIFrame").attr("src",url); 
    } 

要打開覆蓋(這是在釋放鼠標完成)之前調用這個,我創建了谷歌地圖下面的元素通過GWT信息窗口:

<a href="http://whatever.com/menu/" onClick="changeSource('http://whatever.com/menu/');" rel=#menu"> View menu </a> 

jQuery的工具的工作原理是打開任何div有分配到「相對」的id的值,而是因爲我有我的GWT LandingPage.html我的JavaScript/jQuery的,似乎存在某種脫節因爲覆蓋層從未添加到窗口中。

這裏是我的應用程序:http://truxmapper.appspot.com/

正如你所看到的,其他的重疊將正常工作,但一旦你點擊一個信息窗口,並嘗試查看菜單,它只會使用在href在打開網址窗口。

有誰知道一個解決方案,可以讓我完成我的目標?謝謝!

+0

我仍然無法獲得釋放屬性來觸發任何形式的動作。 – 2010-05-28 01:56:55

回答

1

這個答案與一些資料,我發現有用的爲我提供了,但它沒有包括「解決方案」,我發現。

我無法找到一種方法來從GWT中的鏈接觸發jQuery工具使用的「a [rel]」jQuery選擇器。但是,因爲它是javascript函數,所以我簡單地聲明覆蓋圖:

$(function() { 
$("#menu").overlay({effect: 'apple', mask: 'gray'});  

});

,改變了changeSource函數:現在

function changeSource(url){ 
    $("#menuIFrame").attr("src",url); 
    $("#menu").overlay().load(); 
} 

,從內GWT鏈路HREF = 「JavaScript的:changeSource( 'menu_url.html');」這似乎是正常工作。

謝謝。

+0

很高興你的工作。您網站上的變化是? – Anurag 2010-05-28 05:22:24

2

點擊鏈接將打開當前窗口中的頁面,因爲沒有任何東西可以阻止它。該鏈接的onclick處理程序需要返回false以防止發生默認操作(打開url)。它應該看起來像:

<a href=".." onClick="changeSource(..); return false;" rel=#menu">View menu</a> 

注意調用changeSource後返回false。或者,您可以修改changeSource以返回值本身,並簡單地返回任何changeSource返回的值。該changeSource功能看起來像:

function changeSource() { 
    // do some work 
    return false; 
} 

鏈接變爲:

<a href=".." onClick="return changeSource(..);" rel=#menu">View menu</a> 

這從導航離開停止頁面,並從於其預期應該工作。如果沒有,這很可能是jQuery工具的問題。在我的測試中,默認情況下彈出窗口並未顯示,因爲<div class="menu_overlay">..</div>被CSS隱藏。我做了一些進一步的兩輪牛車通過進一步修改的onClick以顯示它:

onClick="$('.menu_overlay').show(); return changeSource(..);" 
+0

我打算對你的帖子發表評論,但是我是通過自己的回答意外創建的。我做的方式在下面給出。 – 2010-05-28 04:54:43

相關問題