2012-02-17 49 views
0

我想要做的是这样的:的jQuery选择这个元素,而子类的此

$(".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

你能更清楚了吗?你想要一个隐藏它的父类的按钮吗? – 2012-02-17 17:22:09

+0

你是什么意思只隐藏名称班?您是否想要隐藏列表项,或从链接中删除类“名称”? – j08691 2012-02-17 17:22:50

+0

只要做$(this).hide();'而不是'$(this.name)' – 2012-02-17 17:23:55

回答

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/

+0

您的$(“。name”,this)。隐藏();按照它应该的方式工作,我还更新了我的示例,以显示li可能看起来像什么以供将来参考。 – 2012-02-17 17:38:20

+0

@DylanCross:添加到我的答案:-) – 2012-02-17 17:40:42

0

为了使工作,你只需要根据属性的值要建立一个类选择

$(".chat-wrapper").on("click", ".chat-wrapper li", function(){ 
    var sel = "." + $(this).attr('class'); 
    $(sel).hide(); 
}); 

注:火箭指出,如果锚可以有多个类,那么你需要考虑是否要为做手术全部,部分或仅仅一个类。这里是所有类的代码

$(".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(); 
    } 
}); 
+1

注意$(this).attr('class')'可能包含多个(空格分隔的)类。 – 2012-02-17 17:23:18

+0

@火箭良好的呼叫,更新 – JaredPar 2012-02-17 17:26:20

0

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

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

    $(this).hide(); 

}); 
+0

on功能设置,因为它应该是,我用它了很多,它比live()更好。但我没有试图隐藏li元素,在我的例子中,我只想隐藏.name类,而不是li。 (实际上,我希望能够选择该元素中的任何元素来添加类,隐藏,更改或任何可能的元素。 – 2012-02-17 17:31:39