Чтобы найти дочерние элементы, вы можете использовать один из:
$("> ul", this)
$(this).find("ul")
В вашем обработчике кликов, this
будет div "click here". Селектор, использующий >
, означает поиск дочерних элементов, но в вашем HTML ul
не является дочерним элементом this
(нажмите здесь), поэтому не будет работать.
нужно найти следующий ul
, а не дочерний элемент ul
и >
для этого не используется.
Если ul
является следующим элементом, то вы можно использовать простой .next()
, в противном случае вам нужно будет найти его, используя другой метод.
Затем вы можете извлечь данные, используя .map
Обратите внимание, что data-xyz
должно быть в нижнем регистре иначе $("li").data("xyz")
не найдет его.
Если сложить их вместе, вы получите:
$(document).on("click", ".click", function() {
var data = $(this).next().find("li").map(function() {
return $(this).data("dataattribute")}
).toArray()
console.log(data)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>
<div class="click">
<span>click here</span>
</div>
<ul>
<li data-dataattribute="1"></li>
<li data-dataattribute="3"></li>
<li data-dataattribute="7"></li>
</ul>
</li>
</ul>