jQuery onclick隐藏其父元素
(function() { $("ul li a").click(function(e) { e.preventDefault(); $(this).parent().hide(); }); })(jQuery);
还尝试了“一个”jQuery函数
(function() { $("ul li a").one('click', function(e) { e.preventDefault(); $(this).parent().hide(); }); })(jQuery);
使用.click处理事件,然后使用.parent和.hide方法。
$("a").click(function(){ $(this).parent().hide(); // this is the link element that was clicked })
上面的代码假定链接直接包含在列表元素(
)中。 如果不是这种情况,您可以将选择器传递给.parent
方法,如下所示:
$(this).parent("li").hide();
这将找到您的链接的祖先并返回
的祖先。
回归虚假
通常,当您单击标签时,浏览器将导航到标签的href。 如果你不想要,你可以
return false;
从单击处理程序或添加返回false的href: Link
。 在这个问题上有更多关于此的讨论。
有很多不同的方法可以做到这一点
您可能需要代码的变体,因为:
- 您可能在页面上有其他链接,您不想隐藏其父级。 这就是为什么使用“ul li a”作为选择器而不是“a”是有意义的 – 它只匹配列表中的链接
- 您可以使用事件对象的
.preventDefault()
而不是返回false来阻止浏览器更改地址 - 由于链接在被单击后将被隐藏,您还可以使用.one方法 – 它将在单击链接后删除事件处理程序。 如果您打算稍后再次显示该链接,请不要这样做。
- 如果您的列表是动态的,则可以使用.on而不是.click ,即您将使用Javascript添加链接
- 一些回答者已将代码包装在所谓的自调用函数中。 它看起来像这样:
(function() { /* code */})(jQuery);
。 我不建议初学者使用它,虽然它可以帮助您稍后构建代码。 基本上它可以帮助您避免代码中不必要的副作用,并允许您使用.noConflict 。
试试这个隐藏父母li
并阻止点击超链接的默认操作。 请参阅http://api.jquery.com/event.preventDefault/ :
$(function() { $("a").click(function(e) { e.preventDefault(); $(this).parent().hide(); }); });
别忘了使用return false;
$('a').click(function(){ $(this).parent().hide(); return false; });
现场演示
您可以使用.parent()
来定位元素的父级,使用.parent()
.hide()
来隐藏它。 有关这些函数的用法的详细信息,请参阅jQuery文档。 您还应该使用.preventDefault()
来阻止浏览器跟踪链接。
$(function() { $('a').click(function(e) { e.preventDefault(); $(this).parent().hide(); }); });
$( "a" ).click( function(){ $( this ).parent().hide(); return false; } );
工作实例可以在这里找到http://jsfiddle.net/shinyakoizumi/aQanZ/
$('a').click(function(){ $(this).parent('li').hide(); });