2010-06-21 80 views
1

我要寻找一个广义的选择器功能,做以下范围内的所有div:PHP,jQuery的,选择父DIV

$(".data").click(function(){ 
    //insert proper selector 
)}; 

<div class="one"> 
<div class="data">text</div> 
<div class="data">text</div> 
<div class="data">text</div> 
</div> 

<div class="two"> 
<div class="data">text</div> 
<div class="data">text</div> 
<div class="data">text</div> 
</div> 

我想选择做如下:

1)。选择父div内的所有div(这意味着包括您刚刚单击的那个div)。 2)。不要选择其他“父”div内的div。

我也意识到,如果您可以从选定的项目中过滤$(this)(您点击的div)将会很酷。考虑一个奖金的问题:)

我一直在从不同的角度看这个,但只发现丑陋的硬编码(到一个特定的父母)。我感谢任何输入!

回答

5

.siblings()选择被点击的兄弟姐妹。

.andSelf()增加了一个被点击的设置。

测试例如:http://jsfiddle.net/sc23L/

$(".data").click(function(){ 
    // reference the one that was clicked 
    var $clicked = $(this); 

    // reference the entire set 
    var $divs = $clicked.siblings().andSelf(); 
}); 
+0

完美,我甚至没有意识到兄弟姐妹()存在。该功能完全符合我的要求。谢谢帕特! – Mattis 2010-06-21 16:18:26

+0

@Mattis - 不客气。 :o) – user113716 2010-06-21 16:19:18

+0

.andSelf()这很漂亮,我总是这样做.add(this) – 2010-06-21 16:20:19

1

也许您在寻找.siblings()选择器?

$('.data').click(function() { 
    $(this).siblings('.data').andSelf() 
)}; 

假设你要选择所有.data元素都是兄弟姐妹当前,选中的元素。 .andSelf()将当前元素添加到选择中。

+0

谢谢,你是对的:) – Mattis 2010-06-21 16:19:27

0

好吧,你的其他请求

$(".data").click(function(){ 
    $(this); //code for the clicked element 
    $(this).parent(); //code for parent of clicked element 
    $(this).siblings(); //code for siblings 
)}; 
1

兄弟姐妹选择不会获取被点击的格...

$('.data').click(function(){ 
    var $clickedDiv = $(this); 
    var $allDivs = $(this).parent().children('div'); 
}); 

我不明白的“过滤器$(本)”的一部分然而,有$ clickedDiv你可以做任何你想它...

+0

谢谢,这也是比我自己找到的更好的答案:) – Mattis 2010-06-21 16:19:00