根据<li> </li> </ul>的文本查找<ul> id

时间:2014-05-15 07:07:10

标签: javascript jquery

我有独特的文字,我希望在该文本上获取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功能包含文字用户

9 个答案:

答案 0 :(得分:2)

您可以使用filter执行此操作:

var $usersUl = $('a').filter(function() {
    return $(this).attr('onclick').indexOf('users') != -1;
}).closest('ul');

Example fiddle

但是应该注意的是,让你的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');

答案 1 :(得分:1)

使用attribute contains selector

<强> Fiddle

var id = $('ul > li > a[onclick*="\'users\'"]').closest('ul').attr('id');

或者也包括函数名称:

var id = $('ul > li > a[onclick="myfunction(\'users\')"]').closest('ul').attr('id');

答案 2 :(得分:0)

在这种情况下我不会使用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
});

答案 3 :(得分:0)

这里是:

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

})

答案 4 :(得分:0)

在事件处理程序中传递当前对象,并使用ulclosest()

来获取父onclick="myfunction(this,'users')"的ID

<强> Live Demo

HTML

<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'));
}

答案 5 :(得分:0)

试试这个:

$('a[onclick*="users"]').each(function() {
    console.log($(this).text());   
});

<强> DEMO

答案 6 :(得分:0)

试试这个:

$(document).ready(function(){
    $('li a').on('click', function(){
        alert($(this).closest('ul').prop('id'));
    });
});

这是我的小提琴示例http://jsfiddle.net/58CTf/3/

答案 7 :(得分:0)

<script>
  function myfunction(param, event) {
    console.log(event.target.parentElement.parentElement.id);
  }
</script>

答案 8 :(得分:0)

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

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