Получить верхний элемент из дерева DIV в структуре HTML - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть HTML-код для каждого виджета, подобный этому:

HTML-код

Как получить атрибут имени div data-tracker-id (= 118DBA90ECB84E7BB9E7C07402F4B4B25CC0CD43818B92F8E0C26CA63C5F543D), когда я нажимаю class , например, стрелку «назад», щелкнув мышью? Создание элемента DOM с помощью CSS-селектора не работает.

1 Ответ

0 голосов
/ 03 апреля 2019

Для этого вам понадобится собственный HTML-тег, в котором вы можете написать свой собственный код, который ищет эту информацию относительно элемента, по которому щелкнули, который можно назвать {{Click Element}}, если он включен в встроенном в переменных.

Вы можете сделать это, используя jQuery, с функцией parent () , которая переходит к указанному родительскому элементу. Э.Г.

var parent = $({{Click Element}}).parent('div[data-tracker-id]');

Вы также можете смоделировать эту функцию, используя ванильный JavaScript. Одно из возможных решений:

    //define function
      var gtmGetClosest = function ( elem, selector ) {

        // Element.matches() polyfill
        if (!Element.prototype.matches) {
            Element.prototype.matches =
                Element.prototype.matchesSelector ||
                Element.prototype.mozMatchesSelector ||
                Element.prototype.msMatchesSelector ||
                Element.prototype.oMatchesSelector ||
                Element.prototype.webkitMatchesSelector ||
                function(s) {
                    var matches = (this.document || this.ownerDocument).querySelectorAll(s),
                        i = matches.length;
                    while (--i >= 0 && matches.item(i) !== this) {}
                    return i > -1;
                };
        }

        // Get closest match
        for ( ; elem && elem !== document; elem = elem.parentNode ) {
            if ( elem.matches( selector ) ) return elem;
        }

        return null;

      };

    //use it
    var parent = gtmGetClosest({{Click Element}}, 'div[data-tracker-id]');

Пользовательская функция основана на этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...