我有以下HTML:
<ul class="someclass">
<li id="1">
<button type="button" class="grey"></button>
</li>
<li id="2">
<button type="button" class="grey"></button>
</li>
<li id="44">
<button type="button" class="grey"></button>
</li>
<li id="54">
<button type="button" class="grey"></button>
</li>
</ul>
现在,我正在尝试用jquery完成这项工作:
点击按钮查找父id
的{{1}},以下是我尝试失败的方式:
li
两个都警告我$(".grey").live('click', function(){
alert($(this).parents("li").attr("id"));
alert($(this).parents("li:first").attr("id"));
});
,我该怎么做?
问题更新
啊,是的,我忘了提及null
并非完全位于button element
标记中,li
li
时正在使用hovered
标记创建append
?我写这个例子就是为了让你能得到我正在尝试的想法
另一个更新:
当我尝试$(this).closest("li");
时,我会收到[object Object]
警报,但如果我添加attr("id");
我就会失效
答案 0 :(得分:3)
我认为这可能是您id
值的问题:您不能使用以数字开头的令牌。 IIRC,Firefox不介意,但IE失败了(应该如此)。将ids更改为具有前缀,例如:"item_44"
,它应该没问题。
来源:http://www.w3.org/TR/html4/types.html
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
答案 1 :(得分:2)
It works for me。 编辑:但不是在Internet Explorer中。正如其他人所提到的,ID不能以数字开头。您可能应该使用其他属性。
执行此操作的最佳方法是调用closest
方法:
$(this).closest('li')
答案 2 :(得分:0)
虽然看起来不错,因为你只是在一级旅行,你只需要.parent(),而不是.parents()...但最好的可能是.closest()(你可以{{ 3}})。