2017-06-18 73 views
1

選擇信息窗口的DOM元素,我需要通過類的GM-風格-IW「選擇元素來解決一些風格的信息窗口。選擇發生在angularjs指令內部。谷歌地圖從angularjs指令

<div ui-view="full-map" id="full-map" class="mainMap col-xs-6"></div> 

UI視圖 - 加載與IW內容的指令。 map在該指令中被初始化。

對指令的控制器初始化我有類「克式-IW」來編輯元素。

var iwElem = $document[0].getElementsByClassName("gm-style-iw") 

確實返回正確的元素。

的console.log(iwElem)結果是:

[] 
length: 1 
0: div.gm-style-iw 
__proto__: HTMLCollection 

但是我追求它卡住了。 它作爲一個HTMLCollection,這是HTML元件的陣列,據我所知。 =>我必須能夠通過iwElem[0]得到這個0元素,奇怪的是,iwElem[0]回報undefined

也試圖與jQuery選擇:

$('.gm-style-iw') =>length:0

$('div.gm-style-iw') =>length:0

+0

'我一定能得到這個0通過iwElem元素[0]'是與不是,你會想嘗試其他號碼,或輸出集合在控制檯上看到,你可以在那裏找到什麼。將規則注入gmaps info-window配置對象不是更簡單嗎? – admcfajn

+0

你有多少個網頁?這看起來像是一個框架問題。你可以嘗試一次從開發工具不同的幀中獲取elemet getters。還有,框架是相同的還是交叉的起源? – gauravmuk

+0

我包括從'在後'$文件[0] .getElementsByClassName( 「GM-式-IW」)的輸出。將規則注入到gmaps info-window config中不是更簡單 - 不,特別是我想要的版本需要通過刪除一些默認類來完成。 – user1935987

回答

0

如果你確信你的HTML是一樣的東西

<div ui-view="full-map" id="full-map" class="mainMap col-xs-6"> 
    ...some codes 
    <div class="gm-style-iw"></div> 
    ... other codes 
</div> 

如果您正在使用JQuery,如何嘗試下面的選擇器?

$('.mainMap .gm-style-iw') 

這意味着越來越.gm-style-iw類的子節點類.mainMap

+0

它不完全是這樣,但是 - 我嘗試了類似的東西,並沒有幫助。 但爲什麼我不能得到'$文件[0] .getElementsByClassName( 「克式-IW」)[0]'? – user1935987

+0

對不起,我沒有注意到angularjs,我會嘗試一下。 –

+0

如果您使用的是directive:controller,那麼使用element.getElementsByClassName而不是document.getElementsByClassName?如'控制器:[ '$範圍', '$元件',函數MyTabsController($範圍,$元件){}]''參見創建的僞指令Communicate'在[創建自定義指令(HTTPS://docs.angularjs。 org/guide/directive) –

0

問題的父節點下部分解決。

$timeout(function() { 
     removeIwStandardStyles() 
    },300); 

    function removeIwStandardStyles() { 
      var iwOuter = $(iwOuterTemp); 
      while (iwOuterTemp.length < 1){ 
      iwOuterTemp = document.getElementsByClassName("gm-style-iw"); 
      } 

      var iwBackground = iwOuter.prev(); 

      iwBackground.children(':nth-child(2)').css({'display' : 'none'}); 
      iwBackground.children(':nth-child(4)').css({'display' : 'none'}); 
    } 

$document[0].getElementsByClassName("gm-style-iw")是受涼corrent元素,但好像他們並沒有應用到DOM,又或一些其他負載問題。

但是,解決方案不完整(請參閱while) - 我想我可以這樣做,因爲該元素肯定會加載。 $timeout本身並沒有完全幫助 - 有時它會等到完成IW加載,有時不會。