2017-06-18 64 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加载,有时不会。