How to change the text color of first select option

后端 未结 6 884
我在风中等你
我在风中等你 2020-11-30 10:49

I have a select element which has several items. I want to change the color of its first item, but it seems the color only shows when you click on the select dropdown. What

相关标签:
6条回答
  • 2020-11-30 11:26

    Here is a way so that when you select an option, it turns black. When you change it back to the placeholder, it turns back into the placeholder color (in this case red).

    http://jsfiddle.net/wFP44/166/

    It requires the options to have values.

    $('select').on('change', function() {
      if ($(this).val()) {
    return $(this).css('color', 'black');
      } else {
    return $(this).css('color', 'red');
      }
    });
    select{
      color: red;
    }
    select option { color: black; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select>
    <option value="">Pick one...</option>
    <option value="test1">Test 1</option>
    <option value="test2">Test 2</option>
    <option value="test3">Test 3</option>
    </select>

    0 讨论(0)
  • 2020-11-30 11:26

    For Option 1 used as the placeholder:

    select:invalid { color:grey; }
    

    All other options:

    select:valid { color:black; }
    
    0 讨论(0)
  • 2020-11-30 11:33

    You can do this by using CSS: JSFiddle

    HTML:

    <select>
        <option>Text 1</option>
        <option>Text 2</option>
        <option>Text 3</option>
    </select>
    

    CSS:

    select option:first-child { color:red; }
    

    Or if you absolutely need to use JavaScript (not adviced for this): JSFiddle

    JavaScript:

    $(function() {
        $("select option:first-child").addClass("highlight");
    });
    

    CSS:

    .highlight { color:red; }
    
    0 讨论(0)
  • 2020-11-30 11:35

    If the first item is to be used as a placeholder (empty value) and your select is required then you can use the :invalid pseudo-class to target it.

    select {
      -webkit-appearance: menulist-button;
      color: black;
    }
    
    select:invalid {
      color: green;
    }
    <select required>
      <option value="">Item1</option>
      <option value="Item2">Item2</option>
      <option value="Item3">Item3</option>
    </select>

    0 讨论(0)
  • 2020-11-30 11:41

    I really wanted this (placeholders should look the same for text boxes as select boxes!) and straight CSS wasn't working in Chrome. Here is what I did:

    First make sure your select tag has a .has-prompt class.

    Then initialize this class somewhere in document.ready.

    # Adds a class to select boxes that have prompt currently selected.
    # Allows for placeholder-like styling.
    # Looks for has-prompt class on select tag.
    Mess.Views.SelectPromptStyler = Backbone.View.extend
      el: 'body'
    
      initialize: ->
        @$('select.has-prompt').trigger('change')
    
      events:
        'change select.has-prompt': 'changed'
    
      changed: (e) ->
        select = @$(e.currentTarget)
        if select.find('option').first().is(':selected')
          select.addClass('prompt-selected')
        else
          select.removeClass('prompt-selected')
    

    Then in CSS:

    select.prompt-selected {
      color: $placeholder-color;
    }
    
    0 讨论(0)
  • 2020-11-30 11:43

    What about this:

    select{
      width: 150px;
      height: 30px;
      padding: 5px;
      color: green;
    }
    select option { color: black; }
    select option:first-child{
      color: green;
    }
    <select>
      <option>one</option>
      <option>two</option>
    </select>

    http://jsbin.com/acucan/9

    0 讨论(0)
提交回复
热议问题