假设以下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元素等?
答案 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)
$(...)
永远不是一个HTML元素;它总是一个列表。
您可以使用.get()
转换为常规Javascript列表,或者更好地使用.each()
:
$(anchor).each(function() { alert(this) });
这会给你[object HTMLAElement]
之类的东西。您必须使用for/in
完全检查它,但.tagName
和.innerHTML
可能足以弄清楚您的位置。
我也想使用$(...).css('outline', '1px solid lime')
来查找元素。这让他们很难错过并且很容易用Firebug查明。
附录:我绝对同意上述关于将您的Javascript与HTML分离的答案。不要内联JS。