找到& lt; ul>基于< light >的文本
find <ul> id based on text of <li>
我有一个具有唯一文本的li,我想获得该文本的id。
<ul id="test1">
<li><a href="#" onclick="myfunction('users')">My Link</a></li>
</ul>
<ul id="test2">
<li><a href="#" onclick="myfunction('Account')">Test Link</a></li>
</ul>
我想获得UL id,其li锚标记onclick函数包含文本users
您可以使用filter
来完成此操作:
var $usersUl = $('a').filter(function() {
return $(this).attr('onclick').indexOf('users') != -1;
}).closest('ul');
例子小提琴
应该注意的是,让你的UI依赖于JS函数调用中的参数是有点不美观的,如果不是接近黑客的话。如果可以的话,更改HTML以包含一些data
属性并通过以下方式进行过滤:
<ul id="test1">
<li><a href="#" onclick="myfunction('users')" data-type="users">My Link</a></li>
</ul>
<ul id="test2">
<li><a href="#" onclick="myfunction('Account')" data-type="account">Test Link</a></li>
</ul>
var $users = $('a').filter(function() {
return $(this).data('users');
}).closest('ul');
使用属性包含选择器:
小提琴
var id = $('ul > li > a[onclick*="''users''"]').closest('ul').attr('id');
或者也包括函数名:
var id = $('ul > li > a[onclick="myfunction(''users'')"]').closest('ul').attr('id');
在这种情况下我不会使用onclick,尝试这样做:
<ul id="test1">
<li><a href="#" data-value="users">My Link</a></li>
</ul>
<ul id="test2">
<li><a href="#" data-value="Account">Test Link</a></li>
</ul>
然后jQuery:
$("li").click(function() {
parent = $(this).parent(); // your UL element
value = $(this).data('value'); // your parameter, you can use it now
// Rest of your function right here
});
试试这个:
$('a[onclick*="users"]').each(function() {
console.log($(this).text());
});
演示strong>
试试这个:
$(document).ready(function(){
$('li a').on('click', function(){
alert($(this).closest('ul').prop('id'));
});
});
这是我的小提琴的例子http://jsfiddle.net/58CTf/3/
<script>
function myfunction(param, event) {
console.log(event.target.parentElement.parentElement.id);
}
</script>
在事件处理程序中传递当前对象,并使用closest()
, onclick="myfunction(this,'users')"
获取父ul
的id
现场演示