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)jQuery(x)
  • (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