需要jquery选择器的帮助

时间:2010-03-14 14:55:50

标签: javascript jquery

我有以下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");我就会失效

3 个答案:

答案 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}})。