我创建了一系列的jQuery的复选框在一个循环中,像这样:修改动态创建的jQuery的复选框按钮的CSS
var checkbox = $('<input>').attr({type: 'checkbox', id: checkbox_id);
panel.append(checkbox);
panel.append($('<label>').attr({for: checkbox_id}).html(checkbox_name);
checkbox.button();
我有一个名为my-style
CSS类定义像border-radius
,padding
和line-height
事情。我想要my-style
覆盖由jQuery主题定义的属性,仅用于我创建的复选框。
我试过checkbox.addClass("my-style");
和panel.find(".ui-button-text").addClass("my-style")
,但都没有正常工作。一些css属性会覆盖jQuery的默认值,比如border-radius
,其他的似乎不能像line-height
和padding
那样被覆盖。我甚至试图直接通过panel.find(".ui-button-text").css("line-height", 1.0);
强制执行css属性,但这根本不起作用。
据我所知,我可以直接修改jQuery主题,通过改变那里的CSS代码,但这样做会影响所有按钮,这不是我想要做的。
UPDATE:
一个我已经设法解决这个问题的方法是通过直接指定style
标签。所以,上面的代码变成:
var checkbox = $('<input>').attr({type: 'checkbox',
id: checkbox_id});
panel.append(checkbox);
var label = $('<label>').attr({for: checkbox_id,
style: "font-size: 0.6em; border-radius: 0px; margin-right: 0.3em;"}).text(checkbox_name);
panel.append(label);
checkbox.button();
label.children().attr("style", "padding: 0.2em 0.4em;");
虽然这种解决方案的工作,这是令人厌恶的,因为我混合JavaScript和CSS代码放在一起。
通过编写style
属性,我可以重写jQuery UI的CSS。这里讨论的一件事是使用更具体的CSS选择器,它比jQuery UI的CSS类具有更多的权重。更具体的选择器将是具有复选框的ID。这种方法的问题是复选框是动态生成的,复选框ID也是如此。因此,根据我的理解,有更具体的CSS选择器是不可行的。
您是否尝试过使用'!important'声明想要覆盖的css属性? – 2011-12-22 22:47:37