如何使用Jquery查找最近的父元素属性值

时间:2013-12-26 12:32:15

标签: javascript php jquery html

我在使用 Jquery 获取最近的父元素属性值时遇到问题。谁可以帮我这个事。我的元素结构如下,

<ul class="Someclass">
<li><span id=3 class="heading"></span>
  <ul>
    <li>
     <ul> <li><span ><button onclick= "redirect()"></button></span</li>
     <ul>
    </li>
  </ul>
</li>
<ul>

<script type="text/javascript">
function redirect() {
    alert(....)
}
</script>

在上面的代码中,当我点击具有onclick事件的元素时,我希望alert()中的值为3,该元素位于具有类标题的元素中。上面的代码是for循环的,因此在同一页面中会有更多这样的代码。

6 个答案:

答案 0 :(得分:3)

试一试

function redirect(elem) {
    alert($(elem).closest('.Someclass > li').children('span').attr('id'))
}

将标记更改为:

<li><span><button onclick= "redirect(this)"></button></span</li>

this会对DOM中的当前对象进行处理 通过在elem中包装$(elem)会将其转换为jQuery对象,然后您可以遍历到最近并找到span

您还可以使用span

过滤.children('span:first')

Fiddle Example

答案 1 :(得分:2)

使用当前代码,将单击的元素引用传递给函数,如

<button onclick= "redirect(this)">asdf</button>

然后

function redirect(el) {
    alert($(el).closest('.Someclass > li').children('span').attr('id'))
}

演示:Fiddle

更推荐的方法是使用像

这样的jQuery事件处理程序
<button class="redirect">asdf</button>

然后

jQuery(function($){
    $('.Someclass .redirect').click(function(){
        alert($(this).closest('.Someclass > li').children('span').attr('id'))
    })
})

演示:Fiddle

答案 2 :(得分:0)

这应该这样做。

alert($(this).closest('.heading').attr('id'));

答案 3 :(得分:0)

 $(".someclass li").click(function(){
   $(this).closet('.heading').attr('id');

})

答案 4 :(得分:0)

你可以把它作为参数传递给你的重定向功能吗?你会以某种方式在循环中的变量中保存该值。

答案 5 :(得分:0)

如果您可以将idclass更改为父li

,我会找到解决方案

<强> Working Demo

有关 parent selector

的更多信息

<强> Jquery的

function redirect(elem) {
    var myid = $(elem).parents(".heading").attr("id");
    alert(myid);
}

<强> HTML

<ul class="Someclass">
<li id="3" class="heading">
  <ul>
    <li>
     <ul> <li><span ><button onclick="redirect(this)" id="haha">Go</button></span</li>
     <ul>
    </li>
  </ul>
</li>
<ul>