Tôi tin rằng hàm .addClass() trong jQuery gắn một lớp CSS vào lựa chọn hiện tại, nhưng tôi tự hỏi tôi có thể tạo hoặc định nghĩa một lớp CSS trong jQuery, sau đó đính kèm nó?Tạo một lớp CSS trong jQuery
Trả lời
Thực ra, bạn có thể tạo quy tắc CSS sẽ ảnh hưởng đến tất cả các thành phần trên trang hiện tại. Trong hầu hết các trình duyệt nó nên càng đơn giản như:
var style = $('<style>body { background: green; }</style>')
$('html > head').append(style);
này có thể hoặc không có thể làm việc trong IE, tuy nhiên bạn có thể sử dụng trình duyệt IE của độc quyền addRule thay vì:
document.styleSheets[0].addRule('body', 'background: green', -1);
Đương nhiên điều này sẽ không giúp bạn trong việc tạo các tệp css có thể được chia sẻ giữa các trang web, nhưng đó là một cách tiện dụng để ảnh hưởng đến kiểu của một số lượng lớn các phần tử mà không cần phải lặp lại chúng.
Tôi không chắc chắn chính xác những gì bạn muốn, nhưng tôi nghĩ tốt nhất bạn có thể làm là một cái gì đó như thế này:
var someClass = { "width": "100%", "background": "#ffffff" };
$(this).css(someClass);
Lưu ý rằng điều này là không thực sự tạo ra một lớp, nhưng nó có thể làm những gì bạn nhu cầu.
Lưu ý rằng lớp là một từ dành riêng trong JavaScript – gregers
Đây là thứ sẽ tạo lớp CSS sẽ có sẵn ở mọi nơi và áp dụng nó cho đối tượng jQuery. Này sử dụng các kỹ thuật cơ bản giống nhau như đã đề cập bởi MooGoo nhưng fleshed ra thành một mảnh đầy đủ chức năng của mã:
(function() {
var addRule;
if (typeof document.styleSheets != "undefined" && document.styleSheets) {
addRule = function(selector, rule) {
var styleSheets = document.styleSheets, styleSheet;
if (styleSheets && styleSheets.length) {
styleSheet = styleSheets[styleSheets.length - 1];
if (styleSheet.addRule) {
styleSheet.addRule(selector, rule)
} else if (typeof styleSheet.cssText == "string") {
styleSheet.cssText = selector + " {" + rule + "}";
} else if (styleSheet.insertRule && styleSheet.cssRules) {
styleSheet.insertRule(selector + " {" + rule + "}", styleSheet.cssRules.length);
}
}
}
} else {
addRule = function(selector, rule, el, doc) {
el.appendChild(doc.createTextNode(selector + " {" + rule + "}"));
};
}
var createCssClass = function(className, cssProps, doc) {
doc = doc || document;
var head = doc.getElementsByTagName("head")[0];
if (head && addRule) {
var selector = "*." + className;
var ruleBits = [];
for (var i in cssProps) {
if (cssProps.hasOwnProperty(i)) {
ruleBits.push(i + ":" + cssProps[i] + ";");
}
}
var rule = ruleBits.join("");
var styleEl = doc.createElement("style");
styleEl.type = "text/css";
styleEl.media = "screen";
head.appendChild(styleEl);
addRule(selector, rule, styleEl, doc);
styleEl = null;
}
};
jQuery.fn.createAndApplyCssClass = function(className, cssProps) {
createCssClass(className, cssProps, document);
this.addClass(className);
};
})();
$("#someelement").createAndApplyCssClass("test", {
"background-color": "green",
"color" : "white"
});
Với jQuery.Rule bạn có thể viết mã như thế này để nối thêm một quy tắc CSS mới:
$.rule('#content ul{ border:1px solid green }').appendTo('style');
Mở rộng một quy tắc:
$.rule('#content ul', 'style').append('background:#FF9');
Loại bỏ toàn bộ quy tắc:
$.rule('#content ul', 'style').remove();
Có nhiều hơn trong số API docs.
Nội bộ, nó sử dụng mẹo "chắp thêm biểu định kiểu để đầu" mà MooGoo mentioned as well.
Cần lưu ý rằng plugin $ .rule v1.0.2 không còn hoạt động (2013) với Firefox nữa. – Strixy
- 1. jQuery fadeTrong lớp CSS
- 2. Tạo một kiểu CSS mới (permenant) trong jQuery
- 3. Tạo CSS: sau với jQuery
- 4. jQuery thay đổi lớp css thành div
- 5. Tạo một lớp JavaScript đơn giản với jQuery
- 6. Twitter Bootstrap ẩn lớp css và jQuery
- 7. CSS - Cách chọn id trong một lớp
- 8. Thêm lớp CSS vào một phần tử trong khi kéo qua w/jQuery
- 9. Hộp đổ bóng CSS trong jQuery .css()
- 10. cách tạo Đường dẫn CSS bằng javascript hoặc jquery?
- 11. mimic: hover css sử dụng một lớp css
- 12. Thêm lớp CSS dựa trên chuỗi URL thông qua JQuery
- 13. Tạo một hình chữ thập trong CSS
- 14. jQuery thêm/xóa lớp css trên radio đã chọn
- 15. Tạo một lớp trong NodeJS
- 16. CSS - Tạo một div "có thể nhấp"
- 17. jquery:.. Mệt mỏi của css() css() css()
- 18. Tạo truy vấn phương tiện CSS bằng javascript hoặc jQuery
- 19. tạo lớp thứ ba từ hai lớp hiện có trong css
- 20. jQuery Xóa Lớp CSS khỏi tất cả các Con cháu cùng một lúc
- 21. jquery -Nhận giá trị thuộc tính CSS cho một lớp chưa được áp dụng
- 22. jQuery CSS 'hoặc' bộ chọn
- 23. jquery datepicker trong phạm vi css
- 24. Tạo một lớp PHP -> Tạo một đối tượng của nó trong một lớp khác
- 25. áp dụng kiểu css cho một lớp lồng trong div
- 26. jQuery vô hiệu hóa tất cả các nút của một lớp css
- 27. jQuery CSS: Tự động thay đổi thuộc tính của một lớp
- 28. Kiểm tra xem một lớp CSS tồn tại mà không có jQuery
- 29. Bến/menu tròn trong css hoặc jquery
- 30. Tạo biểu mẫu cho lớp CSS sử dụng simple_form_for
Ý bạn là gì khi xác định "lớp học"? Bạn muốn tạo một quy tắc CSS toàn cục thông qua JavaScript? Nếu vậy, tại sao bạn muốn làm điều đó? –
Chính xác, tôi chỉ đang tò mò vì tò mò. – Qcom
có thể trùng lặp của [jquery tạo quy tắc css/lớp @ thời gian chạy] (http://stackoverflow.com/questions/1212500/jquery-create-css-rule-class-runtime) –