2012-11-12 36 views
0

我想要做的是當用戶點擊一種顏色(div.colour_palette_box)我想更新Big Box(div.region)。問題是代碼應該是動態的,因爲我有幾個設置(div.color_set)。其中之一如下所示。如何獲得最接近的特定div?

這是我指的是用戶界面,

enter image description here

在發生火災的bug它看起來就像下面這樣。

enter image description here

我嘗試到現在。

jQuery('div#color_wrapper').on('click','div.colour_palette_box',function(){ 
     //jQuery(this).closest('div.region'); 
      //jQuery(this).prev('div.region'); 
      //both does not work 

    }); 

上面的代碼不會讓我離點擊div.colour_palette_box最近的div.region嗎?我怎麼才能得到它 ?

更新

實際HTML

<div class="color_set"> 
    <div class="region"> 
     <div colorpalette="colour_selection_box_bg" class="colour_box"></div> 
     <p>Product Background</p> 
    </div> 
    <div class="colour_selection_box_bg colorpalette" style="display: block;"> 
     <img src="components/com_jink/assets/images/close_mark.jpg" class="colorpalette_close" /> 
     <div class="colour_palette"> 
     <div colorid="6" colorregion="bgcolor" style="background:#000000" class="colour_palette_box"></div> 
     <div colorid="7" colorregion="bgcolor" style="background:#00FF00" class="colour_palette_box"></div> 
     <div colorid="8" colorregion="bgcolor" style="background:#0000FF" class="colour_palette_box"></div> 
     <div colorid="9" colorregion="bgcolor" style="background:#FF0000" class="colour_palette_box"></div> 
     <div colorid="10" colorregion="bgcolor" style="background:#FFFF00" class="colour_palette_box"></div> 
     </div> 
    </div> 
</div> 

感謝

+0

更好地發佈您的實際HTML代碼,而不是屏幕熱,和一個http://jsfiddle.net/演示。 –

+0

問題已按要求更新。 – Techie

+1

我想你需要把jQuery(this).parent()。parent()。prev('div.region')或類似的東西 –

回答

1

試試這個:

jQuery('div#color_wrapper').on('click', 'div.colour_palette_box', function() { 
    var bgColor = $(this).css("background-color"); 
    $(this).closest("div.colorpalette").prev("div.region").css("background-color", bgColor); 
});​ 
0

regionbox所以父母的兄弟姐妹,因爲它不是一個祖先closest將無法​​正常工作

試:

$('.colour_palette_box').closest('.colorpalette').siblings('.region') 
1

試試這個:

jQuery('div#color_wrapper').on('click','div.colour_palette_box',function(){ 
    jQuery(this).parents("div.color_set").find("div.region") 
       .css("background", jQuery(this).css("background")); 
}); 

希望這將有助於

1

您需要在同一個父去使用.prev(),所以用這個代碼:

jQuery(this).parent().parent().prev('div.region')