我在使用 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循环的,因此在同一页面中会有更多这样的代码。
答案 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')
答案 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)
如果您可以将id
和class
更改为父li
<强> Working Demo 强>
的更多信息<强> 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>