jQuery选择这个元素,以及这个的子类

时间:2012-02-17 17:19:25

标签: jquery this parent

我想做的是这样的事情:

$(".chat-wrapper").on("click", ".chat-wrapper li", function(){

$(this.name).hide();

});

结构将是:

<ul class="chat-wrapper">
<li><img src=""/><a class="name">Name 1</a><div class="body"></div></li>
<li><img src=""/><a class="name">Name 2</a><div class="body"></div></li>
</ul>

因此,当您单击名称2时,它将仅隐藏该名称类。 (我的li元素里面有超过1个类,我希望能够选择我想要的那个) (这不是我需要这样做的实际原因,但这是一个简单的例子)

3 个答案:

答案 0 :(得分:1)

我仍然不确定你在问什么,但似乎你在<a>内有多个<li>,并希望隐藏只是被点击的那个。

这是你想要的吗?

$(".chat-wrapper").on("click", ".chat-wrapper li", function(e){
    $(e.target).hide(); // `e.target` is the child element (<a>) you clicked on.
                        // `this` would be the entire <li>, because that's
                        // what the event is bound to.
});

编辑:要仅隐藏具有特定类的元素,您可以执行以下操作:

$(".chat-wrapper").on("click", ".chat-wrapper li", function(){
    $('.name', this).hide(); // This is the same as $(this).find('.name')
                             // `this` is the <li> that was clicked on
});

DEMO:http://jsfiddle.net/LTPpJ/

答案 1 :(得分:0)

要完成这项工作,您只需要根据属性值

建立一个类选择器
$(".chat-wrapper").on("click", ".chat-wrapper li", function(){
  var sel = "." + $(this).attr('class');
  $(sel).hide();
});

注意:当Rocket指出锚是否可以有多个类时,您需要考虑是否对所有类,一些类或仅一个类执行操作。以下是为所有类

执行此操作的代码
$(".chat-wrapper").on("click", ".chat-wrapper li", function(){
  var all = $(this).attr('class').split(' ');
  var i;
  for (i = 0; i < all.length; i++) {
    var sel = '.' + all[i];
    $(sel).hide();
  }
});

答案 2 :(得分:0)

我对.on()函数不太熟悉。但我认为你要做的是以下几点。

$(".chat-wrapper > li").on("click", function(){

   $(this).hide();

});