【问题标题】:Hide parent div of child with class用类隐藏孩子的父 div
【发布时间】:2016-12-20 08:46:35
【问题描述】:

如果您知道如何寻求帮助,可能并不难。不幸的是,我对jQuery/JavaScript 完全陌生,我不知道该怎么做,所以如果有人能指出我正确的方向,那就太好了!

我正在开发一个带有第 3 方 Google 地图组件的 Joomla 网站。很酷的组件,但是我想隐藏 1 个特定的标签。通常我会简单地用 CSS 隐藏这个元素,但由于这个特定的 div 没有任何“ID”或“类”,我认为我不能直接用 CSS 定位它。

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

我认为这样的事情可以解决问题:

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

但是,我的知识有限,我不确定这是否与我正在使用的 jQuery 代码有关,或者因为我只是将它放在错误的位置或其他我做错的事情。 .. (不断获得“

未捕获的类型错误:无法读取 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 class="gm-style-iw"'上方的'div'

以下是 Google 地图组件的实时示例。 http://83.84.140.23:8888/joomla/index.php/contact

我基本上是想隐藏在打开页面时显示“Gabbon”的“文本气球”...(在底部的地图中)

任何人都可以为我指出如何隐藏它的正确方向?

非常感谢!

【问题讨论】:

    标签: javascript jquery html joomla


    【解决方案1】:

    未捕获的类型错误:无法读取 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>
    

    【讨论】:

    • 谢谢!有了这个,如果我在控制台中输入它,我确实可以删除 div。太棒了..现在我需要弄清楚如何将它包含在组件中,因为我假设它需要在元素加载到页面后加载?我现在要玩这个,如果我知道如何做到这一点,我会在这里更新.. :)
    • @digibeta 答案已更新,希望对您有所帮助。告诉我
    • 谢谢!!!它就像一个魅力。 :) 真的很感谢你把它们放在一起。我会对你所链接的所有内容进行适当的阅读。下次真的很想自己学习如何做......无论如何,再次感谢一百万!我真的很感激!
    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多