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