1
$('.pallete').hide();
$(document).delegate('.pick', 'click', function () {
  var pos = $(this).offset();
  var x = pos.left - $(window).scrollLeft() + $(this).width();
  var y = pos.top - $(window).scrollTop() + $(this).height();
  $('.pallete').css({
    top: y + "px",
    left: x + "px",
  }).show();
});

$(document).delegate('.col', 'click', function () {
  var pos = $(this).css('background-color');
  $('.pick').css('background-color', pos);
  $(this).parents('div').fadeOut();
}); 

这是小提琴,http://jsfiddle.net/zPNk3/5/。问题是当我第一次单击.pick元素时,“.palette”元素会正确显示。但是当我下次单击时,同样不起作用。

4

2 回答 2

5

当你这样做时$(this).parents('div').fadeOut(),你正在淡出元素的所有 <div>父母。你只是显示.pallete

尝试:

$(this).closest('.pallete').fadeOut();

有用!

于 2013-09-30T15:42:51.237 回答
1

在此处输入图像描述

查看不应该隐藏的行 div,

$(document).delegate('.col', 'click', function () {
  var pos = $(this).css('background-color');
  $('.pick').css('background-color', pos);
  //$(this).parents('div').fadeOut(); // this is wrong
  $(this).parent().parent().fadeOut(); // fixed
}); 
于 2013-09-30T15:53:29.670 回答