【问题标题】:jquery dynamic position changejquery动态位置变化
【发布时间】:2012-05-24 11:33:51
【问题描述】:

我在我的 Web 应用程序中使用这个 jquery 颜色选择器插件 http://www.eyecon.ro/colorpicker/。我需要做一些设计调整。我将在应用程序上展示一些示例功能。请看这个http://jsfiddle.net/FSDPH/8/ 有一个带手风琴的可移动盒子。在颜色部分,我实现了无法在 jsfiddle 中显示的颜色选择器插件。 What I need is, when the color picker is selected and if the box is moved beyond the (document) section, the box and color picker palette 应动态更改其在文档区域内的位置。我已成功动态更改框位置,但无法使其适用于颜色选择器调色板。

这是 jquery 代码:(用于动态更改框和颜色选择器调色板位置)

var dwidth = $(document).width() - 225; // #box_bg width
$("#box_bg").draggable({
stop: function(event, ui) {
      var npos = $("#box_bg").position();
      if ( npos.left > dwidth)
      {
          $(".colorpicker").css("left","-133px!important");
          $("#box_bg").css("left", dwidth+"px");
      }
      } 
});

在上面的代码中,当盒子移动到文档区域之外时,$("#box_bg") 正在工作。但它不适用于 $(".colorpicker") left 属性在 colorpicker.css 文件中没有改变。为什么会这样?

更新

这里我已经显示的更清楚了,请检查一下:)

http://jsfiddle.net/rkumarnirmal/4GrsD/3/

谁能指导我?

谢谢!

【问题讨论】:

  • 你想改变css文件中.colorpicker的left属性吗?您的代码正在尝试更改所有 .colorpicker 元素的 css left 属性。
  • 是的,我正在尝试更改 .colorpicker 的左侧属性
  • 我找不到你。 .colorpicker 类在我的 html 文件中只使用一次。我查过了
  • 它包含图像。所以我无法添加 jsfiddle
  • 您说“colorpicker.css 文件中的左侧属性未更改”,因此您似乎正在尝试更改 css 文件,而不是元素样式。如果不实例化颜色选择器,您将无法更改其样式属性。

标签: javascript jquery html css


【解决方案1】:

颜色选择器的 left 属性在每次显示时在插件中计算。在您更改插件之前,left 属性将始终动态计算。

这是插件的代码:

show = function (ev) {
    var cal = $('#' + $(this).data('colorpickerId'));
    cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
    var pos = $(this).offset();
    var viewPort = getViewport();
    var top = pos.top + this.offsetHeight;
    var left = pos.left;
    if (top + 176 > viewPort.t + viewPort.h) {
        top -= this.offsetHeight + 176;
    }
    if (left + 356 > viewPort.l + viewPort.w) {
        left -= 356;
    }
    cal.css({left: left + 'px', top: top + 'px'});
    if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
        cal.show();
    }
    $(document).bind('mousedown', {cal: cal}, hide);
    return false;
}

【讨论】:

  • 感谢您的帮助!我确实犯了一些错误。我使用了 left: 85px!important 其中 !important 阻止了我的代码功能。我删除了它现在可以工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 2012-09-19
  • 2013-02-10
  • 1970-01-01
  • 2012-06-16
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多