如何获得最接近的特定div?

时间:2012-11-12 05:06:01

标签: javascript jquery-selectors jquery

我想要做的是当用户点击颜色(div.colour_palette_box)时我想要更新Big Box(div.region)。问题是代码应该是动态的,因为我有几个set(div.color_set)。其中一个如下所示。

这是我所指的用户界面,

enter image description here

在火虫中,它将如下所示。

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>

由于

4 个答案:

答案 0 :(得分: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 :(得分: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);
});​

答案 2 :(得分:1)

您需要让同一个父级使用.prev(),所以请使用以下代码:

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

答案 3 :(得分:0)

regionbox的父母的兄弟姐妹,所以因为它不是祖先closest将不起作用

尝试:

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