2013-05-13 30 views
18

Tôi đang cố nhúng biểu tượng vào một tùy chọn từ danh sách chọn. Sử dụng các biểu tượng phông chữ tuyệt vời, không có biểu tượng nào đang được hiển thị.Biểu tượng trong tùy chọn - Bootstrap + Font-awsome

<select> 
    <option><i class="icon-camera-retro"></i> Doesn't work in option!</option> 
</select> 

Tôi có thể sử dụng phông chữ tuyệt vời để đạt được những gì tôi cần không? Hoặc tôi có phải loại bỏ bằng cách sử dụng font-awesome và làm một nền CSS thủ công cho mỗi tùy chọn?

JSFiddle: http://jsfiddle.net/mmXh2/1/

+1

Tôi nghĩ rằng đó là giải pháp đơn giản hơn, nhưng bạn có thể có một cái nhìn tại này plugin jquery tuyệt vời: http://ivaynberg.github.io/select2/ index.html, phần tạo khuôn mẫu có thể khiến bạn quan tâm. – Getz

+0

Kiểm tra http://stackoverflow.com/questions/2965971/how-to-add-a-images-in-select-list – PSL

+0

@PSL Tôi thực sự thấy rằng trước khi tôi đăng thats lý do tại sao tôi đã đề cập 'một nền CSS thủ công cho mỗi tùy chọn 'nhưng tôi thích sử dụng khung phông chữ tuyệt vời hơn. – Monokh

Trả lời

5

Bạn có thể ăn gian một chút và đưa lớp vào tùy chọn:

http://jsfiddle.net/mmXh2/2/

<option class="icon-camera-retro"> Doesn't work in option!</option> 
+2

Nó không hoạt động ở đây ... Sử dụng Chrome 26 – Getz

+2

Vâng, bạn nói đúng. Tôi gõ nó lên trong Firefox và nó hoạt động ở đó nhưng không có trong Chrome. Ah tốt. –

+0

Cảm ơn các giải pháp, tôi đã thử điều này trong chrome ban đầu và nghĩ rằng nó đã không làm việc, nhưng sẽ cần một giải pháp trình duyệt chéo. Tôi nghĩ rằng tôi phải đi cho một hình nền đơn giản – Monokh

2

Rõ ràng Select2 (http://ivaynberg.github.io/select2/) là một giải pháp để đưa các biểu tượng trong lựa chọn thẻ. Tuy nhiên, có lẽ do tôi thiếu kiến ​​thức, tôi không thể làm cho nó hoạt động được. Cuối cùng tôi đành để sử dụng danh sách (Tôi cũng đã sử dụng Bootstrap)

<a class="btn dropdown-toggle category" data-toggle="dropdown" href="#">All Categories <span class="caret pull-right"></span></a> 
<ul id="category" class="dropdown-menu"> 
    <li><a href="#"><i class="icon"></i> Category A</a></li> 
    <li><a href="#"><i class="icon"></i> Category B</a></li> 
    .. 
</ul> 

Có một nhược điểm tuy nhiên, id của danh sách có phải là duy nhất. Vì vậy, nếu như tôi bạn có 5 danh sách khác nhau trong một trang, bạn phải khai báo (?) Tất cả chúng trong javascript làm cho các mã chunky.

$(function(){ 
    $("#category li a").click(function(){ 
    $(".category").val($(this).text()); 
    }); 
}); 

Hy vọng rằng sẽ giúp giảm bớt ánh sáng.

+0

gần đây đã tìm thấy cách để đặt biểu tượng vào các thẻ

19

Bạn có thể sử dụng FontAwesome làm phông chữ unicode và chèn biểu tượng của mình theo cách đa nền tảng. Bạn chỉ cần nhìn lên giá trị unicode cho mỗi biểu tượng

<select style="font-family: 'FontAwesome', Helvetica;"> 
    <option>&#xf083; Now I show the pretty camera!</option> 
</select> 
+6

Không hoạt động trong Chrome, Safari và Opera (Mac) [JSFiddle] (http: // jsfiddle .net/PageLab/y49pd /) –

+0

Tôi không có máy Mac nhưng nó sẽ hoạt động ở đó.bất cứ ai có thể xác nhận điều này? – Sanojian

+0

Trên máy Mac, nó chỉ hoạt động trong Firefox. Điều này đang được theo dõi trong [Github] (https://github.com/FortAwesome/Font-Awesome/issues/996) cũng: –

0

Sử dụng một plugin như select2

Dưới đây là một công tác jsfiddle

<select id="icon_select" style="width: 150px;"><option value="fa-glass">&amp;#xf000; fa-glass</option> 
    <option value="fa-music">&amp;#xf001; fa-music</option> 
</select> 
+0

Không hoạt động trong Chrome (v49) – GavKilbride

+0

Không hoạt động trong Chrome 49 trên máy Mac. –

0

Một giải pháp cho các biểu tượng làm việc trong Chrome đã được trao on a similar question .

JSFiddle Example

Mã sử ​​dụng:

function format(icon) { 
    var originalOption = icon.element; 
    return '<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text; 
} 
$('.wpmse_select2').select2({ 
    width: "100%", 
    formatResult: format 
}); 
Các vấn đề liên quan