Trong trình khởi động twitter, tôi đang tìm cách cho phép một nút là màu mặc định khi không hoạt động. Khi một nút được kích hoạt, tôi muốn thay đổi màu của nó. Tôi đã xem xét cách làm việc đó với tệp js đã được cung cấp. Tôi đã viết một kịch bản nhỏ để xử lý điều này.Chuyển đổi lớp nút Twitter Bootstrap khi hoạt động
Trả lời
Bằng cách thêm class-toggle
làm thuộc tính cho nút bằng với những gì bạn muốn đến khi nút được nhấn và thêm jQuery sau, bạn sẽ nhận được kết quả được mô tả ở trên.
$('.btn-group > .btn, .btn[data-toggle="button"]').click(function() {
if($(this).attr('class-toggle') != undefined && !$(this).hasClass('disabled')){
var btnGroup = $(this).parent('.btn-group');
if(btnGroup.attr('data-toggle') == 'buttons-radio') {
btnGroup.find('.btn').each(function() {
$(this).removeClass($(this).attr('class-toggle'));
});
$(this).addClass($(this).attr('class-toggle'));
}
if(btnGroup.attr('data-toggle') == 'buttons-checkbox' || $(this).attr('data-toggle') == 'button') {
if($(this).hasClass('active')) {
$(this).removeClass($(this).attr('class-toggle'));
} else {
$(this).addClass($(this).attr('class-toggle'));
}
}
}
});
Sau đó, nút sẽ trông như thế
<button class="btn" data-toggle="button" class-toggle="btn-inverse">Single Toggle</button>
Nếu bạn muốn làm điều đó với một nhóm nút cũng nó hoạt động theo cùng một cách. Chỉ cần thêm class-toggle
vào mỗi nút trong nhóm.
CẬP NHẬT
tôi đã sửa đổi và tạo ra một ý chính để có một phản ứng tốt hơn khi bắt đầu bạn nút với một lớp. Toggle Twitter Bootstrap Classes
CẬP NHẬT
Tôi đã thực hiện một sự thay đổi để sửa chữa các lỗi xuất hiện khi bạn bấm vào một nút radio hoạt động
tôi đã chỉnh sửa mã của bạn. Nếu bạn bấm vào một trạng thái hoạt động trong mã của bạn, nó tất cả messes lên. Tôi đã thêm một chút nếu tuyên bố ngăn chặn điều này. Chỉ cần đóng góp nếu bạn cần sửa chữa. Làm việc tốt với mã.
$('.btn-group > .btn, .btn[data-toggle="button"]').click(function() {
var buttonClasses = ['btn-primary','btn-danger','btn-warning','btn-success','btn-info','btn-inverse'];
var $this = $(this);
if ($(this).attr('class-toggle') != undefined && !$(this).hasClass('disabled')) {
var btnGroup = $this.parent('.btn-group');
var btnToggleClass = $this.attr('class-toggle');
var btnCurrentClass = $this.hasAnyClass(buttonClasses);
if(btnToggleClass!='false'&&btnToggleClass!='btn') {
if (btnGroup.attr('data-toggle') == 'buttons-radio') {
var activeButton = btnGroup.find('.btn.active');
var activeBtnClass = activeButton.hasAnyClass(buttonClasses);
activeButton.removeClass(activeBtnClass).addClass(activeButton.attr('class-toggle')).attr('class-toggle',activeBtnClass);
$this.removeClass(btnCurrentClass).addClass(btnToggleClass).attr('class-toggle',btnCurrentClass);
}
if (btnGroup.attr('data-toggle') == 'buttons-checkbox' || $this.attr('data-toggle') == 'button') {
$this.removeClass(btnCurrentClass).addClass(btnToggleClass).attr('class-toggle',btnCurrentClass);
}
}
}
});
$.fn.hasAnyClass = function(classesToCheck) {
for (var i = 0; i < classesToCheck.length; i++) {
if (this.hasClass(classesToCheck[i])) {
return classesToCheck[i];
}
}
return false;
Trân trọng Một Bootstrap Lover
Tôi không nghĩ rằng bất kỳ JS là thực sự cần thiết. Tôi tin rằng điều này có thể thực hiện bằng cách thực hiện hoàn toàn bằng CSS và data
thuộc tính.
Có, nó liên quan đến một chút trùng lặp CSS, nhưng vẫn tốt hơn đôi khi javascript bị lỗi.
- Thêm thuộc tính dữ liệu
data-active-class
nút, Thêm tùy chỉnh CSS cho tất cả các lớp học (ví dụ về một cho dễ đọc; màu sắc được lấy từ các lớp học đã tồn tại "chính", "thành công", và vân vân)
.btn.active[data-active-class="primary"] { color: #fff; background-color: #286090; border-color: #204d74; }
Inactive nút sẽ làm như thường lệ, hoạt động dựa trên data-*
thuộc tính sẽ hiển thị bởi^^ CSS này.
Edit: Khi sử dụng Sass hoặc ít hơn các màu sắc có thể/nên được sử dụng từ các biến đã được xác định bởi Bootstrap ... mà giải quyết sao chép vấn đề.
@bretterer Hãy xem xét liệu câu trả lời này có đáp ứng nhu cầu của bạn không :) – podvlada
Tôi có thiếu gì đó không? Không thể làm điều này để làm việc trong fiddle được cung cấp. – Khrys
@Khrys Đã thử điều này trên một số PC (ngay cả trên điện thoại của tôi), không có vấn đề gì, bạn có thể vui lòng cung cấp thêm thông tin về những gì là sai? Chỉ có một số html và css, không javascript, có thể có điều gì đó sai trái với tài nguyên bên ngoài (thiếu bootstrap.min.js và bootstrap.min.css)? – podvlada
- 1. Twitter bootstrap .popover không hoạt động
- 2. nav-collapse không hoạt động [Twitter Bootstrap]
- 3. Twitter Bootstrap Carousel Slide không hoạt động
- 4. Twitter Bootstrap thả xuống không hoạt động
- 5. Twitter Bootstrap không hoạt động với less.js
- 6. Thay đổi kích thước các nút trong Twitter-Bootstrap
- 7. Twitter Bootstrap Carousel chu kỳ tự động không hoạt động
- 8. Các nút hoạt động với Bootstrap 3
- 9. Twitter Bootstrap ẩn lớp css và jQuery
- 10. Twitter Bootstrap carousel - chuyển đổi css trong Firefox
- 11. Nút radio khởi động Twitter không hoạt động
- 12. Cảnh báo đóng cửa twitter-bootstrap không hoạt động
- 13. Twitter Bootstrap 2.1 - Phương thức không hoạt động đúng cách
- 14. Twitter-Bootstrap: Hai nút thả xuống bên cạnh không hoạt động chính xác
- 15. Jquery và twitter bootstrap làm cho tab hoạt động không hoạt động
- 16. Sử dụng nút Chuyển đổi ở vị trí của hộp Check (Rails, Twitter Bootstrap, Simple_form)
- 17. Twitter Bootstrap 2 plugin javascript không hoạt động
- 18. Trình đơn thả xuống Twitter Bootstrap không hoạt động
- 19. twitter bootstrap của băng chuyền chuyển
- 20. Làm thế nào để thay đổi tab Twitter Bootstrap, khi nhấn nút?
- 21. Thay đổi kiểu btn-group .active trong Twitter Bootstrap
- 22. Twitter Bootstrap - Responsive đóng
- 23. Twitter Sử dụng lớp tiện ích đáp ứng Bootstrap Twitter
- 24. Twitter Bootstrap Carousel Không trượt
- 25. Thêm biểu tượng nút Twitter Bootstrap vào button_to trong Rails
- 26. giữ tab hiện tại hoạt động với twitter bootstrap sau khi tải lại trang?
- 27. Twitter Bootstrap thả xuống trên ipad và android không hoạt động ngay cả khi hack
- 28. Sử dụng Twitter Bootstrap nút radio với Flask
- 29. CakePHP với Bootstrap (từ Twitter)
- 30. Trung tâm Twitter Bootstrap 3 Glyphicons trong các nút
Cảm ơn vì ý chính! Tuy nhiên, trong trường hợp nút radio, khi bạn bấm hai lần vào cùng một nút, một trục trặc xuất hiện. – Kalzem
@BabyAzerty Tôi đã cập nhật nó để sửa lỗi này. xem bản cập nhật cuối cùng hoặc http://jsfiddle.net/W9hUr/120/ – bretterer
Xin cảm ơn bạn đã gửi bài đăng này. Tuy nhiên, nó không làm việc bạn chỉ định một sự kiện nhấp chuột thứ hai vào nút (sau này trong kịch bản). Có cách nào propper để đối phó với trường hợp này hoặc tôi phải gọi chức năng mỗi khi tôi muốn có các lớp học chuyển sang một nút nút/nút? – mffap