2016-08-13 94 views
2

寻找一些帮助,如果你知道如何,可能不是那么困难。不幸的是,我对jQuery/JavaScript完全陌生,我不知道如何做到这一点,所以如果有人能指出我正确的方向,那会很棒!隐藏父类div的子类

我正在使用第三方Google地图组件的Joomla网站上工作。酷组件,但有一个特定的标签,我想隐藏。通常我只是简单地用CSS隐藏这个元素,但是由于这个特殊的div没有任何“ID”或“Class”,我想我不能直接用CSS来定位它。

我注意到我想隐藏的div的孩子,有一个独特的类,所以我正在寻找一个解决方案,通过使用孩子的类名,我可以隐藏它的父母。

我想这样的事情会做的伎俩:

$('.gm-style-iw').parent().hide(); 

然而,我的知识有限,我挣扎,我不知道,如果是涉及到我使用jQuery的代码,或者是因为我“M干脆把它放错了地方或别的东西,我做错了... (总是有‘

Uncaught TypeError: Cannot read property 'parent' of null

’)

一点背景。这或多或少是代码的特定部分的外观。

<div style="cursor: default; position: absolute; left: 234px; top: 86px; z-index: 86;"> 
    <div class="gm-style-iw" style="top: 9px; position: absolute;"> 

我正在寻找一种方式来隐藏“DIV”上面“DIV CLASS =‘克式-IW’”

下面是谷歌地图组件的一个活生生的例子。 http://83.84.140.23:8888/joomla/index.php/contact

基本上,我试图隐藏“文本气球”,指出“Gabbon”上(在底部在地图)打开网页...

任何人都可以点我在正确的方向关于如何隐藏这个?

非常感谢提前!

回答

1

Uncaught TypeError: Cannot read property 'parent' of null

发生这种情况是因为您对jQuery函数使用了短$符号。

你的情况,你需要使用:

jQuery('.gm-style-iw').parent().hide(); 

欲了解更多详情,请参阅noconflict

在你的情况下,该文件被加载后创建的元素,所以你需要MutationObserver API来听为新元素的可用性。

感谢Mutation_events你可以写:

<script> 
    jQuery('#map').on('DOMNodeInserted', '.gm-style-iw', function(e) { 
     jQuery('.gm-style-iw').parent().hide(); 
    }) 
</script> 

此外,参照this article或其他不同的处理方法是:

<script> 
(function(win){ 
    'use strict'; 

    var listeners = [], 
      doc = win.document, 
      MutationObserver = win.MutationObserver || win.WebKitMutationObserver, 
      observer; 

    function ready(selector, fn){ 
     // Store the selector and callback to be monitored 
     listeners.push({ 
      selector: selector, 
      fn: fn 
     }); 
     if(!observer){ 
      // Watch for changes in the document 
      observer = new MutationObserver(check); 
      observer.observe(doc.documentElement, { 
       childList: true, 
       subtree: true 
      }); 
     } 
     // Check if the element is currently in the DOM 
     check(); 
    } 

    function check(){ 
     // Check the DOM for elements matching a stored selector 
     for(var i = 0, len = listeners.length, listener, elements; i < len; i++){ 
      listener = listeners[i]; 
      // Query for elements matching the specified selector 
      elements = doc.querySelectorAll(listener.selector); 
      for(var j = 0, jLen = elements.length, element; j < jLen; j++){ 
       element = elements[j]; 
       // Make sure the callback isn't invoked with the 
       // same element more than once 
       if(!element.ready){ 
        element.ready = true; 
        // Invoke the callback with the element 
        listener.fn.call(element, element); 
       } 
      } 
     } 
    } 

    // Expose `ready` 
    win.ready = ready; 

})(this); 

ready('.gm-style-iw', function(element) { 
    this.parentNode.style.display = 'none'; 
}) </script> 
+0

谢谢!有了这个,我确实可以删除div,如果我在控制台中输入它。真棒.. 现在我需要弄清楚如何将这个包含在组件中,因为我认为它需要在元素加载到页面后加载? 我打算玩这个现在,并会在这里更新,如果我发现如何做到这一点.. :) – digibeta

+0

@digibeta答案更新,我希望它可以帮助你。让我知道 – gaetanoM

+0

谢谢!它像一个魅力。 :)真的很感谢你放在一起的东西..我会做一个适当的阅读你所链接的一切。真的想学习下次如何自己做... 无论如何,再次感谢一百万!对此,我真的非常感激! – digibeta