2014-10-10 45 views
1

我想用相同的选择器,每次使用jQuery,不同的值多次添加相同的CSS属性。如何使用jQuery为同一元素中的相同CSS属性添加不同的值?

$('.element').css({ 
    'cursor':'-moz-grab', 
    'cursor':'-webkit-grab', 
    'cursor':'move' 
}); 

我该怎么做,而不是每次都覆盖相同的css属性?

+3

添加一个CSS类,这将是更清洁和更好的方法。 – Satpal 2014-10-10 12:10:48

+0

是的,谢谢,但我仍然有兴趣知道它是否有可能在值总是动态变化的情况下 – Crimbo 2015-12-02 10:52:07

回答

0

根据您的问题

DEMO

$('.element').attr("style", "cursor:moz-grab; cursor:-webkit-grab; cursor:move;"); 

Or 

$('.element').css({"cursor":"moz-grab","cursor":"-webkit-grab" ,"cursor":"move" }) 

Or 

.addclass{ 
    cursor:-moz-grab; 
    cursor:-webkit-grab; 
    cursor:move; 
} 

,然后添加使用addClass

+1

但是,请注意,这将删除任何已存在的内联样式,包括以前使用'$ .css'添加的任何内容。 – pawel 2014-10-10 12:13:16

+0

同样的答案,几秒钟后:) – 2014-10-10 12:13:46

+0

第一个选项删除当前元素的所有样式。 第二个选项只包含最后一个“游标”属性。 第三个选项不允许任何动态的CSS,除非你用JavaScript内联CSS。 – 2015-09-02 08:48:53

-1

您可以修改样式属性的类。

$('.element').attr("style", "cursor:-moz-grab;cursor:-webkit-grab;cursor:move"); 
+0

对于其他人要注意的是,这将删除任何已存在的内联样式,包括以前使用'$ .css'添加的任何内容 – Crimbo 2014-10-13 02:02:39

-2
$('.element').each(function() { 

    var eleStyle = ""; 
    if($(this).attr('style')) eleStyle = $(this).attr('style'); 

    $(this).attr(
     'style', eleStyle + 'cursor:-moz-grab; cursor:-webkit-grab; cursor:move;' 
    ); 

}); 
+0

我对$(this).attr('style')'未定义,我猜是因为有没有样式的元素,因为它的立场。你也有一个奇怪的花括号 - 我不能编辑你的答案,因为它只是一个字符的错字 – Crimbo 2014-10-10 15:11:50

+0

我编辑了答案,似乎工作,即保持已存在的元素样式完好 – Crimbo 2014-10-10 15:23:56

+0

这是一个不必要的详细和过度复杂的方式实现['.css()'](http://api.jquery.com/css/#css-properties)免费提供给你的功能 - 如果你没有省略,将会变得更加冗长和过于复杂正确处理元素尚未具有'style'属性的原因。 – 2014-10-11 20:23:20

2

添加到您的CSS一类具有所需的规则。

.addclass{ 
    cursor:-moz-grab; 
    cursor:-webkit-grab; 
    cursor:move; 
} 

,然后这个类添加到您的元素

$('.element').addClass('addclass'); 
+0

是的,这是更清洁的方式,但我仍然有兴趣知道在这种情况下值是否总是动态变化 – Crimbo 2015-12-02 10:54:17

1

这为我工作,我不得不根据用户输入动态添加CSS。

在你的情况下,这是没有必要的,因为你有一个非常明确的CSS,它只是添加游标,所以添加一个类将是一个更好的选择。

在需要添加的情况下,像我一样动态改变用户选择的颜色,可以使用下面的代码。您必须为每个元素执行此操作,因此您可以逐个提取每个元素样式,否则$ elm.attr(“style”)将返回第一个元素样式或未定义,不确定,除非您只有一个元素带类“元素”

$('.element').each(function(idx, elm) { 

    var $elm = $(elm); 
    // This will add standard CSS 
    $elm.css({ 'cursor':'move'}); 

    // This will add fallbacks 

    $elm.attr("style", $elm.attr("style") + ";cursor:-moz-grab;cursor:-webkit-grab"); 

}); 
+0

问题是,您是否必须使用该回退功能,以便可以使用不同的CSS属性值? – Crimbo 2015-12-02 11:06:38

+0

是的,因为jQuery.css({cursor:“move”})实际上删除了任何其他的“游标”属性,包括回退,这也是它实际工作的原因。 – 2015-12-03 18:47:06

相关问题