如何使用jquery隐藏父元素?

时间:2009-08-21 19:38:52

标签: javascript jquery html

假设以下HTML:

<li class="fooli">
   <a class="foo" href="javascript:foo(this);">anchor</a>
</li>
<li class="fooli">
   <a class="foo" href="javascript:foo(this);">anchor</a>
</li>

和以下Javascript(使用jquery 1.3.2):

function foo(anchor) {
  alert($(anchor).attr('href'));
}

我的目标是能够隐藏点击的li,但我无法为它们分配唯一的ID。因此,我希望通过类似$(anchor).parent()。hide()的东西来定位(即识别点击的特定锚点)。

但是,上面的警告返回“undefined”,所以对我来说,我甚至没有正确的jquery对象。

我如何找出$(锚)是什么对象?特别是,我如何看到它具有什么属性,它有什么类,它是什么HTML元素等?

2 个答案:

答案 0 :(得分:19)

你不能这样做:

$(function() {
  $("a.foo").click(function() {
    $(this).parent().hide();
    return false;
  });
});

使用:

<li class="fooli"><a class="foo" href="#">anchor</a></li>
<li class="fooli"><a class="foo" href="#">anchor</a></li>

答案 1 :(得分:7)

jQuery中的

$(...)永远不是一个HTML元素;它总是一个列表。

您可以使用.get()转换为常规Javascript列表,或者更好地使用.each()

$(anchor).each(function() { alert(this) });

这会给你[object HTMLAElement]之类的东西。您必须使用for/in完全检查它,但.tagName.innerHTML可能足以弄清楚您的位置。

我也想使用$(...).css('outline', '1px solid lime')来查找元素。这让他们很难错过并且很容易用Firebug查明。

附录:我绝对同意上述关于将您的Javascript与HTML分离的答案。不要内联JS。