Jquery 如何覆盖CSS类?

Jquery 如何覆盖CSS类?,jquery,css,Jquery,Css,我有一个Soft.CSS文件,它有以下类 .check_out { width:58px; background-image:url(/a/i/softadd/checkout.gif);} 我想在这里做的是将这个类(请注意,我没有访问Soft.CSS的权限,因为它是从其他服务器提供的)更改为 我该怎么做?使用CSS?使用Jquery?Jquery方法是在类上选择-$(“.check_out”)-并修改css(我不记得该怎么做) 它不会更改类,但会更改使用该类的所有内容。当然,如果因为使用它添

我有一个Soft.CSS文件,它有以下类

.check_out {
width:58px;
background-image:url(/a/i/softadd/checkout.gif);}
我想在这里做的是将这个类(请注意,我没有访问Soft.CSS的权限,因为它是从其他服务器提供的)更改为


我该怎么做?使用CSS?使用Jquery?

Jquery方法是在类上选择-$(“.check_out”)-并修改css(我不记得该怎么做)

它不会更改类,但会更改使用该类的所有内容。当然,如果因为使用它添加了其他元素而必须更改该类,那么这可能不起作用


这在很大程度上取决于您的精确需求和解决方案。

我认为,如果您确保您的css片段位于
Soft.css
文件之后,就足够了。大多数浏览器只有在找到具有相同标识的两个条目时才会选择最后一个定义

另外,您可以使用PHP解析
Soft.css
文件,并在
背景图像上执行一些正则表达式,然后找到文件名

更新
另一个答案是:

您是否想过在每个元素上添加另一个类,该元素具有
签出
-类?您可以在其他类上编写自己的css,如
check\u out\u ow
,并使用jQuery添加它:

$(document).ready(function()
{
    // every element gets an extra class with custom information
    $('check_out').addClass('check_out_ow');
});
我不确定,但我希望两个班级的信息比一个班级的信息更深刻。您的css可能看起来像:

.check_out.check_out_ow {
width:58px;
background-image:url(/myserver/checkout.gif);}

如果您想准确地重新定义规则本身,而不是相应的css属性,那么在javascript(而不是jquery)中确实有这样的机会

我们可以访问document.styleSheets集合。每个项目都是CSSStyleSheet,其中包含cssRules集合。但薛定谔猫是对的,很少有情况下我们真的需要直接访问规则

如果您想搞乱DOM CSS,请检查经典参考


但是在您的情况下,如前所述,添加一个带有重新定义规则的单独样式表肯定会更好。

如前所述,您只需要在另一个CSS文件中添加规则,或者在包含Soft.CSS后直接将规则添加到
标记中的页面

如果CSS文件的附加顺序也超出了您的控制范围,您可以使用更高的特殊性来确保您的规则被视为更重要:

div.check_out { /* assuming the element is a div */
width:58px;
background-image:url(/myserver/checkout.gif);}

一个简单的解决方案是赋予您的样式更高的特异性,无论它是在
soft.CSS
之后加载的,还是在
之前加载的,
您所要做的就是使
的CSS选择器具有更高的特异性,只需添加任何父类(甚至ID会更好),因此假设您有一个
,它包装了所有元素,然后您可以覆盖您的样式:

#wrapper .check_out {
    width:58px;
    background-image:url(/myserver/checkout.gif);
}
如果您有权访问此id,也可以将其添加到正文中(例如)

参考以下内容,了解更多关于特殊性的事情

$(function () {
    $('.check_out').css('background-image', '/myserver/checkout.gif');
});


它将更新
的所有实例。请在输出页面中签出
。我想这正是你想要的。您不想在样式表中编辑类本身,因为您没有访问权限。

我认为您可以将代码添加到css文件中,并确保它在Soft.css之后加载。无需使用繁重的JavaScript方法,CSS被设计用来处理级联中的重写。@Shanetheat-一年前,在那里,您只需要使用javascript中的CSS赋值就可以解决一系列问题。动画就是一个很好的例子。同样,与设置样式属性相比,操纵DOM CSSRules是非常罕见的技术。是的,但这取决于您对页面加载的控制程度。如果你不能使用CSS覆盖,这是一种方法。这对于一个最后的解决方案来说已经足够公平了,而且我不是你的-1:)这不是“大多数浏览器”,而是任何符合要求的浏览器处理最后的定义。这就是为什么这些是“层叠”样式表的原因。是的,这就是我记得的,但我确实记得有一些旧浏览器以另一种方式实现了它。但是你是对的,我不能为这个事实提供一个很好的参考。谢谢你,我在Soft.CSS之后添加了一个新的CSS和我所需的类,从而覆盖了CSS
$(function () {
    $('.check_out').css('background-image', '/myserver/checkout.gif');
});