jQuery onclick隐藏其父元素

时间:2012-09-01 10:16:01

标签: javascript html5 jquery

我想在<li>标记上隐藏<a>标记,点击jQuery。

<ul>
  <li>
    <a href="'>Something</a>
  </li>
  <li>
    <a href="'>Something</a>
  </li>
  <li>
    <a href="'>Something</a>
  </li>
</ul>

换句话说,如果有人点击了链接(<a></a>),其父级<li>就会被隐藏。

7 个答案:

答案 0 :(得分:7)

(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);

答案 1 :(得分:4)

使用.click处理活动,然后使用.parent.hide方法。

$("a").click(function(){
    $(this).parent().hide(); // this is the link element that was clicked
})

上面的代码假定链接直接包含在列表元素(<li>)中。如果不是这种情况,您可以将选择器传递给.parent方法,如下所示:

$(this).parent("li").hide();

这将找到您的链接的祖先并返回<li>的祖先。

返回错误

通常,当您点击<a>标记时,浏览器将导航到标记的href。如果你不希望你可以从点击处理程序中return false;或添加一个返回false的href:<a href="javascript:void(0)">Link</a>。有关此in this question的更多讨论。

有很多不同的方法可以做到这一点

您可能需要更改代码,因为:

  • 您可能在页面上有其他链接,您不想隐藏其父级。这就是为什么使用“ul li a”作为选择器而不是“a”是有意义的 - 它只匹配列表中的链接
  • 您可以使用事件对象的.preventDefault()而不是返回false来阻止浏览器更改地址
  • 由于链接在被点击后会被隐藏,您还可以使用.one方法 - 它会在点击链接后删除事件处理程序。如果您打算稍后再次显示该链接,请不要这样做。
  • 如果您的列表是动态列表,则可以使用.on代替.click,即您将使用Javascript添加链接
  • 有些回答者将代码包装在所谓的自调用函数中。它看起来像这样:(function() { /* code */})(jQuery);。我不建议初学者使用它,虽然它可以帮助您稍后构建代码。基本上它可以帮助您避免代码中不必要的副作用,并允许您使用.noConflict

答案 2 :(得分:1)

尝试使用隐藏父项li的内容并阻止单击超链接的默认操作。见http://api.jquery.com/event.preventDefault/

$(function() {
    $("a").click(function(e) {
       e.preventDefault();
       $(this).parent().hide();
    });
});

答案 3 :(得分:1)

您可以使用.parent()定位元素的父级,并使用.hide()隐藏它。有关这些函数的用法的详细信息,请参阅jQuery文档。您还应该使用.preventDefault()来阻止浏览器关注该链接。

$(function() {
    $('a').click(function(e) {
        e.preventDefault();
        $(this).parent().hide();
    });
});

答案 4 :(得分:1)

不要忘记使用return false;

  $('a').click(function(){
      $(this).parent().hide();
      return false;
  });​

Live Demo

答案 5 :(得分:1)

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

工作示例可以在这里找到 http://jsfiddle.net/shinyakoizumi/aQanZ/

答案 6 :(得分:0)

$('a').click(function(){
    $(this).parent('li').hide();
});