Tôi có thể sử dụng Twitter Bootstrap và jQuery UI cùng lúc không?


108

Tôi đang sử dụng Twitter Bootstrap và tôi muốn sử dụng "tự động đề xuất" không có sẵn trong Bootstrap, trong khi giao diện người dùng jQuery có các phương pháp riêng để tự động đề xuất.

Tôi có thể sử dụng cả hai không? Nó sẽ làm quá tải băng thông?


6
jQuery UI là 6,6k (được rút gọn và gzipped) nên trừ khi băng thông của bạn được đo bằng kb, điều này sẽ không thành vấn đề.
BryanH

4
Mọi thứ đã thay đổi kể từ khi tôi đăng câu hỏi này. Hiện nay, có rất nhiều plugin Bootstrap đủ tốt để thay thế các plugin jQuery UI hiện có. Bây giờ, tôi sử dụng Bootstrap với các plugin được tạo cho bootstrap.
Sanket Sahu

1
Tại sao không sử dụng tiêu đề chính tả của twitter ( twitter.github.io/typeahead.js/examples ) để tự động đề xuất?
koppor

Câu trả lời:


83

Kiểm tra jquery-ui-bootstrap . Từ README:

Bootstrap của Twitter là một trong những dự án yêu thích của tôi ra mắt vào năm 2011, nhưng khi sử dụng nó thường xuyên, nó khiến tôi muốn hai điều:

Khả năng làm việc song song với giao diện người dùng jQuery (điều gì đó khiến một số tiện ích con bị hỏng một cách trực quan) Khả năng tạo chủ đề cho các tiện ích giao diện người dùng jQuery bằng cách sử dụng kiểu Bootstrap. Trong khi tôi yêu thích giao diện người dùng jQuery, tôi (cũng như những người khác) tìm thấy một số chủ đề hiện tại trông hơi cũ. Tôi hy vọng rằng chủ đề này cung cấp một giải pháp thay thế phù hợp cho những người khác cảm thấy như vậy. Để làm rõ, dự án này không nhằm mục đích hoặc có ý định thay thế Twitter Bootstrap. Nó chỉ cung cấp một chủ đề tương thích với giao diện người dùng jQuery được lấy cảm hứng từ thiết kế của Bootstrap. Nó cũng cung cấp một phiên bản Bootstrap CSS với một vài phần (nhỏ) được nhận xét cho phép chủ đề hoạt động song song với nó.


62

chỉ để cập nhật điều này, bootstrap v2 không còn xung đột với jquery ui

https://github.com/twbs/bootstrap/issues/171

Chỉnh sửa : với tư cách là @Freshblood, có một số điều vẫn còn xung đột. Tuy nhiên, như Twitter đã đăng ban đầu cho thấy rằng họ đang làm việc này và nó phần lớn hoạt động, đặc biệt so với v1.


10
Bạn có thực sự chắc chắn về điều đó? Tôi vẫn thấy sự cố với trình chọn ngày jquery
Freshblood

Tôi khuyên bạn nên lấy bootstrap v2 và jquery ui và tạo một trang thử nghiệm trống để xác minh rằng đó không phải là mã của bạn. Tôi không gặp sự cố nào kể từ phiên bản mới
Eonasdan

1
Vui lòng kiểm tra datepicker jquery ui này jqueryui.com/demos/datepicker/#dropdown-month-year . Như bạn có thể thấy với cài đặt này datepicker chứa phần tử hộp kéo thả xuống để bootstrap đã ghi đè tất cả các phần tử đầu vào. Nhưng không có vấn đề gì nếu bạn không sử dụng datepicker với các cài đặt này.
Freshblood

1
Bất kỳ widget nào chứa phần tử đầu vào sẽ xung đột với các kiểu css bootstrap của twitter.
Freshblood

1
Tiêu cực. Các chức năng nút của Bootstrap không hoạt động với giao diện người dùng jQuery vì cả hai đều xác định một button()phương thức.
BryanH

24

Để tham khảo trong tương lai (vì đây là máy ATM trả lời hàng đầu của google), để ngăn giao diện người dùng jQuery ghi đè bootstrap hoặc kiểu tùy chỉnh của bạn, bạn cần tạo bản tải xuống tùy chỉnh và chọn no-themechủ đề. Điều đó sẽ chỉ bao gồm các thiết lập lại của jQuery UI và không làm quá tải kiểu của bootstrap cho các phần tử khác nhau.

Trong khi chúng ta đang ở đó, một số thành phần jQuery UI (chẳng hạn như datepicker) có triển khai bootstrap gốc. Các triển khai bootstrap gốc sẽ sử dụng các lớp, thuộc tính và bố cục của bootstrap css, do đó nên có sự tích hợp tốt hơn với phần còn lại của khung.


Tôi không thấy chủ đề không có chủ đề ở đây: jqueryui.com/themeroller . Tôi đã bỏ lỡ nó hay nó không còn ở đó nữa?
gaefan

3
jqueryui.com/download là liên kết bạn nên sử dụng. Cuộn xuống dưới cùng và chọn "Không có Chủ đề" trong danh sách.
T0xicCode

3

Với kinh nghiệm hạn chế của mình, tôi cũng đang gặp phải các vấn đề. Có vẻ như các phần tử JQuery (chẳng hạn như các nút) có thể được tạo kiểu bằng cách sử dụng bootstrap CSS. Tuy nhiên, tôi đang gặp sự cố khi tạo tab giao diện người dùng JQuery và muốn khóa đầu vào chỉ bootstrap (sử dụng lớp đầu vào-chắp thêm) ở cuối mỗi tab, chỉ đầu tiên mới nằm đúng. Vì vậy, các tab JQuery + các nút Bootstrap = có lẽ là không.


2

Bootstrap vẫn không hoạt động với giao diện người dùng Jquery, ví dụ như modal.Bootstrap có phong cách đẹp nhưng với tư cách là một khuôn khổ với Twitter đằng sau thì không tốt.


2

Nếu bạn gặp phải xung đột không gian tên javascript, bạn có thể sử dụng noConflict()chức năng của Bootstrap để nhường chức năng cho giao diện người dùng jQuery.


2

Mặc dù câu hỏi này đề cập cụ thể đến tính năng jQuery-UI autosuggest, nhưng tiêu đề câu hỏi sẽ chung chung hơn: bootstrap 3 có hoạt động với jQuery UI không? Tôi gặp sự cố với tính năng chọn ngày jQUI (lịch bật lên). Tôi đã giải quyết vấn đề trình chọn ngày và hy vọng giải pháp sẽ giúp giải quyết các vấn đề jQUI / BS khác.

Hôm nay tôi đã gặp khó khăn khi tải bộ chọn ngày jQueryUI (ver 1.12.1) mới nhất để hoạt động với bootstrap 3.3.7. Điều đã xảy ra là lịch sẽ hiển thị nhưng nó sẽ không đóng lại.

Hóa ra là vấn đề phiên bản với jQUI và BS. Tôi đang sử dụng phiên bản Bootstrap mới nhất và nhận thấy rằng tôi phải hạ cấp xuống các phiên bản jQUI và jQuery sau:

jQueryUI - 1.9.2 (đã thử nghiệm - hoạt động)
jQuery - 1.9.1 hoặc 2.1.4 (đã thử nghiệm - cả hai đều hoạt động. Phiên bản khác có thể hoạt động, nhưng các phiên bản này hoạt động.)
Bootstrap 3.3.7 (đã thử nghiệm - hoạt động)

Bởi vì tôi muốn sử dụng một chủ đề tùy chỉnh, tôi cũng đã tạo một bản tải xuống tùy chỉnh của jQUI (đã loại bỏ một số thứ như tất cả các tương tác, hộp thoại, thanh tiến trình và một số hiệu ứng mà tôi không sử dụng) - và đảm bảo chọn "Cupertino" ở dưới cùng làm chủ đề của tôi.

Tôi đã cài đặt chúng do đó:

<head>
...etc...
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" href="css/cupertino/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="css/bootstrap-3.3.7.min.css">

<!-- <script src="js/jquery-1.9.1.min.js"></script> -->
<script src="js/jquery-2.1.4.min.js"></script>
<script src="js/jquery-ui-1.9.2.custom.min.js"></script>
<script src="js/bootstrap-3.3.7.min.js"></script>
...etc...
</head>

Đối với những người quan tâm, thư mục CSS trông giống như sau:

[css]
  - bootstrap-3.3.7.min.css
  - font-awesome.min.css
  - style.css
  - [cupertino]
      - jquery-ui-1.9.2.custom.min.css
      [images]
          - ui-bg_diagonals-thick_90_eeeeee_40x40.png
          - ui-bg_glass_100_e4f1fb_1x400.png
          - ui-bg_glass_50_3baae3_1x400.png
          - ui-bg_glass_80_d7ebf9_1x400.png
          - ui-bg_highlight-hard_100_f2f5f7_1x100.png
          - etc (8 more files that were in the downloaded jQUI zip file)

1

Nếu không lưu trữ cục bộ và sử dụng liên kết mà họ cung cấp, bạn có thể có hiệu suất được cải thiện. Máy khách có thể có các tập lệnh đã được lưu trong bộ nhớ cache trong một số trường hợp. Đối với trường hợp của jQueryUI, tôi khuyên bạn không nên tải nó cho đến khi cần thiết. Cả hai đều được thu nhỏ, nhưng bạn có thể kích hoạt bảng điều khiển và nhìn vào tab mạng và xem mất bao lâu để tải nó, sau khi tải xuống ban đầu, nó sẽ được lưu vào bộ nhớ đệm, vì vậy bạn không nên lo lắng sau đó. vâng sử dụng cả hai nhưng sử dụng CDN


1

Có, bạn có thể sử dụng cả hai. js bootstrap từ twitter là một bộ sưu tập các plugin jquery. Sẽ không có bất kỳ xung đột nào với giao diện người dùng jQuery.

Về quá tải băng thông, nó thực sự phụ thuộc vào cách bạn xử lý các yêu cầu tải tất cả các tệp js của bạn. nếu bạn thực sự không muốn thực hiện nhiều yêu cầu đến máy chủ để yêu cầu cho mỗi tệp, chỉ cần nối chúng lại với nhau và thu nhỏ. Hoặc bạn có thể loại bỏ một số plugin js bootstrap mà bạn không cần. nó rất mô-đun.


4
Tất cả JS đều được đặt đúng tên, nhưng bạn cần phải lo lắng về các xung đột CSS: nếu bạn đưa một tiện ích JUI vào tab Bootstrap, điều gì được ưu tiên hơn?
btown

Không chỉ CSS của jQuery trông xấu trong Bootstrap. Bootstrap thực hiện các thay đổi CSS sâu rộng, thường xuyên !important, tôi thấy mình liên tục phải ghi đè và sửa chữa, đôi khi với mã hacky. Tôi ghét Bootstrap và không khuyến khích việc sử dụng nó, ít nhất là cho đến khi nó ngừng sử dụng các phần tử không sử dụng các lớp của Bootstrap. (Đây không phải là nhà thiết kế gốc của lỗi tôi nghi ngờ devs gốc của Twitter mong đợi những gì họ đang làm việc trên để trở thành một thư viện phổ biến.)
Michael Scheper


0

Tôi có trang web được phát triển bằng cách sử dụng jquery ui, tôi chỉ cố gắng cắm bootstrap để phát triển và tạo kiểu trong tương lai nhưng nó hầu như hỏng mọi thứ.

Vì vậy, không chúng không tương thích.


0

Vì đây là kết quả hàng đầu trên google về jquery ui và bootstrap.js nên tôi quyết định thêm nó làm wiki cộng đồng.

Tôi đang dùng:

  • Bootstrap v3.2.0
  • jquery-2.1.0
  • jquery-ui-1.10.3

và bằng cách nào đó khi tôi đưa vào bootstrap.js, nó sẽ vô hiệu hóa trình đơn thả xuống của trình tự động điền jquery ui .

ba cách giải quyết của tôi:

  • loại trừ bootstrap.js
  • trở lên đối với lib đánh máy
  • chuyển từ bootstrap.js sang bootstrap.min.js (lạ, nhưng hiệu quả với tôi)

sự kết hợp của jquery ui bootstrap cũng vô hiệu hóa tooltip và datepicker.
Vipul Hadiya

-3

Data-role = "none" là chìa khóa để làm cho chúng hoạt động cùng nhau. Bạn có thể áp dụng cho các phần tử bạn muốn bootstrap chạm vào nhưng jquery mobile bỏ qua. như kiểu đầu vào này = "text" class = "form-control" placeholder = "Tìm kiếm" data-role = "none"


1
câu hỏi này là về bootstrap và jquery-ui, không jquery mobile
TJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.