如何使用jquery隐藏父元素?

dfr*_*kow 8 html javascript jquery

假设以下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>
Run Code Online (Sandbox Code Playgroud)

和以下Javascript(使用jquery 1.3.2):

function foo(anchor) {
  alert($(anchor).attr('href'));
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

cle*_*tus 21

你不能这样做:

$(function() {
  $("a.foo").click(function() {
    $(this).parent().hide();
    return false;
  });
});
Run Code Online (Sandbox Code Playgroud)

有:

<li class="fooli"><a class="foo" href="#">anchor</a></li>
<li class="fooli"><a class="foo" href="#">anchor</a></li>
Run Code Online (Sandbox Code Playgroud)


Eev*_*vee 7

$(...)在jQuery中永远不是一个单独的HTML元素; 它总是一个列表.

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

$(anchor).each(function() { alert(this) });
Run Code Online (Sandbox Code Playgroud)

这会给你类似的东西[object HTMLAElement].你必须使用for/in完全检查,但.tagName.innerHTML可能是不够好,找出你在哪里.

我也想$(...).css('outline', '1px solid lime')用来寻找元素.这让他们很难错过,并且很容易与Firebug精确定位.

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