我正在尝试修复以下代码:
const $configuratorMenus = $('.configurators-menu ul li');
$configuratorMenus.click(() => {
let panelID = $(this).data("id");
let panelID2 = $(this).attr("data-id");
console.log(panelID, panelID2);
//$(`#${panelID}`).slideToggle();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="configurators-menu">
<ul>
<li data-id="shapes">
<a href="#">
Shape
</a>
</li>
</ul>
</div>
它不断安慰undefined
,我在做什么错?我无法提出任何其他解决方案。
注意:我想通过使用箭头功能解决此问题。
答案 0 :(得分:1)
这应该可以解决您的问题-
const configuratorMenus = $('.configurators-menu ul li a');
configuratorMenus.click(function () {
let panelID = $(this).parent().data("id");
console.log(panelID);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="configurators-menu">
<ul>
<li data-id="shapes">
<a href="#">
Shape
</a>
</li>
</ul>
</div>
答案 1 :(得分:1)
由于使用的是箭头功能,因此在这种情况下将引用窗口对象。您可以使用e.target
。其中e
是事件对象。此外,data
属性在li
上,但是事件起源于a
。因此,将$configuratorMenus
更改为$('.configurators-menu ul li a')
const $configuratorMenus = $('.configurators-menu ul li a');
$configuratorMenus.click((e) => {
// get the parent element from the target
let panelID = $(e.target).parent().data('id');
console.log(panelID);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="configurators-menu">
<ul>
<li data-id="shapes">
<a href="#">
Shape
</a>
</li>
</ul>
</div>