Первая проблема в том, что ваша функция validate()
не знает, к чему относится this
, поэтому вам нужно добавить ее как validate(this)
;
Тогда мы можем сделать это следующим образом.
function validate(obj) {
var test = $(obj).closest("ul").attr('id');
alert(test);
}
Кроме того, у вас не должно быть <li>
в качестве потомка другого <li>
, используйте что-то подобное этой структуре.
<ul id="123">
<li>
<a href="#" onclick="validate(this)">test1</a>
<ul id="456">
<li>
<a href="#" onclick="validate(this)">test2</a>
</li>
</ul>
</li>
</ul>
function validate(obj) {
var test = $(obj).closest("ul").attr('id');
alert(test);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="123">
<li>
<a href="#" onclick="validate(this)">test1</a>
<ul id="456">
<li>
<a href="#" onclick="validate(this)">test2</a>
</li>
</ul>
</li>
</ul>