需要使用jQuery选择器的帮助

3

I have a following 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实现的功能是:
当点击按钮时,查找父级liid,这是我的尝试但失败了:

当按钮被点击时,寻找父级liid,以下是我的尝试但失败了:

$(".grey").live('click', function(){
alert($(this).parents("li").attr("id"));
alert($(this).parents("li:first").attr("id"));
});

两个都给我返回了null,我该怎么办?

问题更新

啊,是的,我忘记提到这个按钮元素不是在li标签中,它是在lihovered时使用append动态创建的。我写了这个示例只是为了让你明白我在尝试什么。

另一个更新:

当我尝试只用$(this).closest("li");时,我得到的是[object Object],但如果我添加attr("id");,我会得到null


3
这对我有用。http://www.jsfiddle.net/kfKT3/ - Ryan Joy
只要它在<li>内部,closest就应该起作用。尝试警报$(this).parent()[0].nodeName - SLaks
@SLaks没有发出任何警报。 - Gandalf StormCrow
3个回答

3
我认为这可能与您的id值有关:您不能使用以数字开头的标记。我想起来Firefox不会介意,但IE会失败(应该是这样)。将id更改为带有前缀的形式,例如:"item_44",那么就可以了。
来源:http://www.w3.org/TR/html4/types.html 引用: ID和NAME标记必须以字母([A-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。

1
太棒了!我刚在FF中进行了测试,却没有注意到ID是如何构建的。 - Ryan Joy
"ID and NAME tokens must begin with a letter ([A-Za-z])" - nickf

2

这对我有效编辑:但在Internet Explorer中无效。正如其他人所提到的,ID不能以数字开头。您应该使用不同的属性。

最好的方法是调用closest方法:

$(this).closest('li')

0

在我看来,这看起来很好,因为你只需要向上移动一个级别,所以只需要使用.parent()而不是.parents()...但最好的方法可能是使用.closest()(你可以在这里阅读)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接