0

Я пытаюсь получить текст ссылки непосредственно перед другой ссылкой (родной брат), но я продолжаю получать «неопределенные». Я не могу понять, что мне нужно изменить, чтобы получить текст Тег привязки, а не «не определено»Как получить текст родительского сиблинга с помощью JQuery

Вот мой HTML:

<li class="dropdown extra-class-a extra-class-b"> 
    <a class="level-1 extra-class1 extra-class2" href="#">Home Menu 1</a> 
    <ul class="someclass" > 
     <li class="some-class3"></li> 
     <li class="no-subcat last" data-moburl="#" data-cgid="other-text"> 
      <a class="level-2" href="#"> Shop Text </a> 
     </li> 
    </ul> 
</li> 

Вот мой сценарий. Обратите внимание, что я добавляю это в Adobe DTM как событие onclick, поэтому я не уверен, как отлаживать это с помощью console.log. Если бы кто-то мог объяснить, как это сделать, это было бы полезно.

Это основано на предложении Кори ниже, но в последней строке, где я жду меню дома 1> магазин текст я > магазин текст (т.е. значение для «пар» пустым

var $x = $(this); 

//get parent link element (i.e., HN1 value) 
var par = $x.closest('[class*="dropdown"]').find('a[class^="level-1"]').text(); ; 
//get value of link clicked 
var clicked = $x.text(); 

//expecting "home menu 1>shop text" 
//currently returns ">shop text" 
var finalValue = par + '>' + clicked; 
+0

Я даже не вижу, вы используете 'jQuery' ... –

ответ

1

функциональность jQuery библиотек доступна через функцию $ или jQuery, что вы, кажется, опустили из вашего кода.

  • Замените ваш экземпляры (x) с $(x) или jQuery(x), ИЛИ
  • Заменить this с $(this) или jQuery(this).

В результате какого-либо из выше будет правильно завернутые элемент JQuery, что дает вам доступ к closest(), prev() и другие функции JQuery вы пытаетесь использовать в своем коде.

В jQuery-land полезно указать переменные, чтобы вы знали, что они обернуты. В остальном я перейду со вторым вариантом сверху, и поэтому я изменю имя x. Ваш фиксированный код может выглядеть примерно так:

var $x = $(this); 

var par = $x.closest('[class*="dropdown"]') 
    .find('[class^="level-1"]') 
    .text(); 
     // ^^ function, not a property 

// get text of link clicked - this works! 
var clicked = $x.text(); 
        // ^^ function, not a property 

    var finalValue = par + '>' + clicked; 
// ^^^ don't forget to declare variables with var 
+0

@Cory спасибо за предложения! Используя ваш формат, где я фактически использую $, работал, чтобы избавиться от «неопределенного» и «не функции», но теперь я просто получаю пустое значение. Итак, в приведенном выше примере я ожидал, что par + '>' + щелкнул, чтобы вернуть «домашний меню 1> текст магазина», но я просто получаю «магазин», – Michelle