2016-02-22 3 views
4

Существует новое требование, в соответствии с которым нам нужно иметь другой цвет для одного элемента списка выбора. I в строке выбора должно быть 2 разных цвета.HTML Выберите тег Option, имеющий цвета differemt в той же строке или той же опции

Пример код HTML ниже:

<select name="test"> 
    <option value = "red blue"> red blue </option> 
    <option style="color:blue;" value = "Row2"> Row2 </option> 
    <option style="color:green;" value = "Row3"> Row3 </option> 
</select> 

Например, для первого выбора варианта, я хочу, чтобы увидеть текст «красный» в красном цвете и «синий» в синем цвете в том же элементе списка.

Пожалуйста, может кто-то обеспечить рабочий пример с полным кодом, если это возможно

Большое спасибо

+0

Rthemus

+1

Он отлично работает здесь https://jsfiddle.net/f8vdnyn8/ – vivek

+0

Итак, вы хотите сказать, что хотите разделить значения цвета и применить к каждому члену в опции? – dvenkatsagar

ответ

0

Это очень легко, вы можете просто назвать все опции к классу и добавить стиль CSS к этому классу, как вы как. Это должно иметь белый фон Это должно иметь красный фон Это должно иметь желтый фон Это должно иметь зеленый фон

<style type="text/css"> 
    .white {background:white;} 
    .red {color:red;} 
    .yellow {color:yellow;} 
    .green {color:green} 
</style> <!-- The styling you want can be given here --> 
+0

Это не то, что хочет OP, он хочет видеть каждый термин в опции с другим цветом. – dvenkatsagar

+0

yes dvenkatsagar is right Я хочу разные цвета в одной строке или в одном и том же теге. Например, если значение опции выбора является предложением, то первое слово должно быть красным, а второе слово - синим, а третье - зеленым. То, что пользователь хочет, - это разбить значение параметра в нескольких цветах. в традиционном варианте можно использовать встроенный стиль, но этот стиль применяется ко всему значению, не являющемуся частью значения. – Rthemus

+0

Есть ли еще какие-то способы достичь этого. @ Dvenkatsagar предоставил хороший пример. Однако у нас есть еще 2 варианта выбора на той же странице, которые отличаются от стиля @dvenkatsagar.Желание было разрешено в теге опций, подобном этому Rthemus

1

На мой взгляд, и экспериментирование с вашим кодом, это не может быть возможно напрямую (failed code). Но если вам нужна работа вокруг/исправить, вы можете использовать небольшую внешнюю библиотеку, такую ​​как purecss (возьмите ее компонент меню), и просто напишите такой код:

Просто пример, чтобы дать представление.

HTML:

<div class="pure-menu pure-menu-horizontal"> 
    <ul class="pure-menu-list"> 
    <li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover"> 
     <a href="#" id="menuLink1" class="pure-menu-link">select here</a> 
     <ul class="pure-menu-children"> 
     <li class="pure-menu-item"><a href="#" class="pure-menu-link" value="red blue">red blue</a></li> 
     <li class="pure-menu-item"><a href="#" class="pure-menu-link" value="blue">Row2</a></li> 
     <li class="pure-menu-item"><a href="#" class="pure-menu-link" value="green">Row3</a></li> 
     </ul> 
    </li> 
    </ul> 
</div> 

Jquery:

$(".pure-menu-children li").each(function(i, opt){ 
    var colors = $(opt).find(".pure-menu-link").attr("value"); // get the value 
    var txt = $(opt).find(".pure-menu-link").text(); // get the text 
    var txtarr = txt.trim().split(" "); // split them 
    var colorarr = colors.trim().split(" "); 
    $(opt).find(".pure-menu-link").html(""); // clear the content of the option 
    var len; 
    if(txtarr.length >= colorarr.length){ 
    len = txtarr.length - colorarr.length; 
    while(len--){ 
     colorarr.push("black"); 
    } 
    } 
    len = txtarr.length; 
    while(len--){ 
    $(opt).find(".pure-menu-link").append("&nbsp;<span style='color : "+colorarr.shift()+"'>"+txtarr.shift()+"</span>&nbsp;"); 
    } 
}); 

Рабочий код: https://jsfiddle.net/dkv6q2da/8/ (проверить внешние источники для компонента меню purecss)

Надеется, что это помогает.

+0

Ну, я обновил код и ответ , Теперь он должен делать то, что должно быть правильно, я думаю, – dvenkatsagar

+0

Спасибо dvenkatsagar. Очень полезно. – Rthemus

+0

Я думаю, вам нужно будет добавить библиотеку html5shiv или что-то, что сделает ее достаточно современной. Насколько я знаю, это не проблема с JQuery. – dvenkatsagar

Смежные вопросы