我试图在另一个链接(父母的兄弟姐妹)之前直接获取链接的文本,但我一直得到"未定义。"我无法弄清楚我需要改变什么来获取锚标记的文本而不是"未定义"
这是我的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调试它。如果有人也可以解释如何做到这一点,那将会有所帮助。
这是基于Cory的建议,但在最后一行,我期待主菜单1&gt;商店文字我得&gt;商店文字 (即&#39; par&#39;的值为空
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 :(得分: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