我創建了一系列的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