【问题标题】:Attempting to get a css value with jquery尝试使用 jquery 获取 css 值
【发布时间】:2016-08-02 15:10:09
【问题描述】:

我正在尝试获取 background 的 css 值。我的尝试失败了,并且没有提供正确的值。我有一个spectrum.js 颜色选择器,无论我选择哪种颜色rgba(0,0,0,0) 总是被选择。当我在控制台中查看背景时,它会在 DOM 中正确显示。

有人知道为什么会失败吗?

<div class="container" id="outside-preview">
    <div class="container" id="inside-preview">
       <div id="image-square"></div>
    </div>
 </div>
$(".colorpicker").spectrum({
    color: "#FFF",
    showInput: true,
    className: "full-spectrum",
    showInitial: true,
    showPalette: true,
    showSelectionPalette: true,
    maxSelectionSize: 10,
    preferredFormat: "hex",
    localStorageKey: "spectrum.demo",
    change: function(color) {
        var eq =  $(this).index('.colorpicker');
        $('.container').eq(eq).css('background-color', color.toHexString())
    }
});

var color = $( "#outside-preview" ).css( "background-color" );
$("#result").html("That div is " + color + "");

Fiddle

【问题讨论】:

标签: javascript jquery css spectrumjs


【解决方案1】:

您需要将读取 CSS 值的代码放在 change 处理程序中,以便在做出选择后更新 #result 元素。您当前的代码仅在加载时读取。

change: function(color) {
    var eq = $(this).index('.colorpicker');
    $('.container').eq(eq).css('background-color', color.toHexString())

    var color = $("#outside-preview").css("background-color");
    $("#result").html("That div is " + color);
},

Updated fiddle

【讨论】:

  • 谢谢!就是这样。你知道为什么当我为内部颜色添加另一个变量时,它会在我选择它之前设置内部颜色 html 吗? jsfiddle.net/way4LmbL/15
  • 这是因为您为两个颜色选择器运行了相同的逻辑。
  • 我还能怎么做?逻辑符合相同的目的,我有不同的 id/变量?
  • 您可以在输入上使用数据属性来定位要更新的div,如下所示:jsfiddle.net/way4LmbL/16。如果您想保持 RGBA 格式的颜色,那么您可以使用相同的技巧来获取 #X-preview div 并像原来一样读取它们的 css()
  • 谢谢,效果很好!该方法唯一的问题是,我将如何为其分配变量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2023-03-22
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多