2013-02-13 22 views
1

我有這樣的結構:如何通過多個div環

<div> 
    <div> 
     <div onclick="someFunction(this)"></div> 
    </div> 
    <div> 
     <div onclick="someFunction(this)"></div> 
    </div> 
    .. 
    .. 
</div> 

所以我someFunction()裏面,我該如何遍歷所有的div S作對他們實施的onclick

我想到了以下幾點:

$(this).parent().parent().children().each(function() { }); 

但不知何故,我完全相信它是錯誤的。因爲做兩次parent()可能會把我帶到最頂層的父節點,但是在這之後,迭代通過每個子節點並不會實際遍歷所有的div,而是遍歷它上面一層的div 。如果我再次做children(),然後做each(),我不認爲它會做我想做的事。 請指導。

回答

5

你爲什麼不用一個類來實現那個onclick方法而將一個類分配給所有的div?

所以,你會做這樣的事情

HTML

<div> 
    <div> 
     <div class="someDiv"></div> 
    </div> 
    <div> 
     <div class="someDiv"></div> 
    </div> 
    .. 
    .. 
</div> 

腳本

$(".someDiv").each(function(){ 
    somefunction(this); 
}); 
+1

簡單的解決方案ñ。謝謝。 – 2013-02-13 14:12:59

0

,你可以這樣做的:

$('div[onclick*=someFunction]') 
0

添加類容易選擇你想要的所有元素。

<div> 
    <div> 
     <div class="myClass"></div> 
    </div> 
    <div> 
     <div class="myClass"></div> 
    </div> 
    .. 
    .. 
</div> 

$(document).ready(function(){ 
    //All your elements which have a class myClass 
    $elements = $('.myClass'); 

    $.each($elements,function(){ 
     //Here you are going through all your elements 
    }); 

    $('.myClass').click(function(){ 
     //Here you are executing your function 
     someFunction(this); 
    }); 
}); 
1

您可以通過鏈接進入parents()匹配eq()祖父元素,那麼使用find()Has Attribute選擇相匹配的<div>元素,你有興趣:

$(this).parents().eq(1).find("div[onclick]").each(function() { 
    // ... 
}); 

如果你想排除當前<div>,您可以使用not()

$(this).parents().eq(1).find("div[onclick]").not(this).each(function() { 
    // ... 
}); 
+0

謝謝你的幫助。 – 2013-02-13 14:13:24