2012-11-12 35 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')