找到& lt; ul>基于< light >的文本

find <ul> id based on text of <li>

本文关键字:light 文本 基于 ul 找到 lt      更新时间:2023-09-26

我有一个具有唯一文本的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());   
});

试试这个:

$(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

现场演示

<ul id="test1">
  <li><a href="#" onclick="myfunction(this,'users')">My Link</a></li>
 </ul>
<ul id="test2">
  <li><a href="#" onclick="myfunction(this,'Account')">Test Link</a></li>
</ul>
Javascript

function myfunction(obj, parm)
{
   alert($(obj).closest('ul').attr('id'));
}

就是这样:

$('ul a').click(function(){  // click event for anchor tag which is inside ul
if($(this).indexOf("users") == -1) // check if text contains users
{
console.log($(this).parent("ul").attr("id")); // get its parent ul id
}
})

试试这个,效果很好(使用父函数)

    $(function(){
    $("ul li").find("a:contains(Link)").parent().parent().attr("id");
})