【问题标题】:Changing the color of a select tag after clicking on a option with class placeholder单击带有类占位符的选项后更改选择标记的颜色
【发布时间】:2017-06-22 08:26:04
【问题描述】:

我的代码如下所示

$(document).ready(function{
	
	$('.#situation').on("click", function{
		console.log('clicked');
		
	});
	
	
});
.placeholder_color{
	color: #828282;
}
<select name="situation" id="situation">
  <option selected="selected">Current Situation</option>
  <option class="placeholder_color" value="Unemployed">Unemployed</option>
  <option class="placeholder_color" value="Employed">Employed</option>

</select>

目前,选择标签具有您可以看到的颜色,几乎就像一个占位符。 当我单击具有类占位符的选项标签时,我希望能够更改文本颜色。

我该怎么做?

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    您应该在 select 而不是 option 上创建 on change 事件。然后找到 selected 选项并检查所选选项是否 hasClass placeholder 。如果是这样,请将Class live 添加到 select 。如果不是,则从select 中删除类live

    见下面的sn-p

    如果有帮助请告诉我

    $('select').on("change", function() {
      var opt = $(this).find("option:selected")
      if ($(opt).hasClass("placeholder")) {
        $(this).addClass("live")
      } else {
        $(this).removeClass("live")
      }
    });
    #situation {
      color: #828282;
    }
    #situation option {
    	color:#828282;
    }
    #situation.live {
      color: red;
    }
    
    select {
       -webkit-appearance: none;
       -moz-appearance:    none;
       appearance:         none;
    }
    /* for IE */
    select::-ms-expand {
        display: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select name="situation" id="situation">
      <option selected="selected">Current Situation</option>
      <option class="placeholder" value="Unemployed">Unemployed</option>
      <option class="placeholder" value="Employed">Employed</option>
      <option selected="selected">Current Situation</option>
    </select>

    【讨论】:

    • 我在您的代码行为中注意到了一点:单击已使用或未使用后,所有选项标签的颜色都变为红色。理想情况下,我不想更改选项标签的颜色。只是选择
    • 我正要粘贴同样的东西。@Nadj 选项正在选择中。
    • @Nadj 改变了答案。立即查看
    • @Nadj 你拼错了functiondocument ready。应该是function()
    • 是的,我刚刚注意到。有没有办法可以删除所有浏览器中的箭头。我只知道 webkit-appearence 并不适用于所有浏览器。我知道这不是我的问题的一部分,所以我仍在为你的答案投票,希望你能在可能的情况下提供帮助。
    【解决方案2】:

    这会解决你的问题

    jQuery(document).ready(function($) {
      $('#situation').on("click", function(){
        $('.placeholder').toggleClass('live');
      });		
    });
    #situation{
      color: #828282;
    }
    
    .live{
      color: red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select name="situation" id="situation">
    	<option class="placeholder" value="Unemployed"> Unemployed </option>
    	<option class="placeholder" value="Employed"> Employed </option>
    </select>

    【讨论】:

      【解决方案3】:

      点击选项有点棘手。您可以在选择框上使用更改触发器,但是找出占位符类可能有点困难。因此,您可以使用以下内容来满足您的需求。

      $(document).ready(function() {
        $('#situation').on('click', function(ev) {
          if (ev.offsetY < 0) {
            //user clicks on option
            $(this).toggleClass("live");
          }
        });
      });
      #situation, #situation option {
        color: #828282;
      }
      
      #situation.live {
        color: red;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <select name="situation" id="situation">
      	<option selected="selected">Current Situation</option>
      	<option class="placeholder" value="Unemployed">Unemployed</option>
      	<option class="placeholder" value="Employed">Employed</option>
      </select>

      【讨论】:

      • 当点击第一个选项或第四个选项(如果他有的话)时,这也会改变班级。和. You can use a change trigger on the select box but than it's a little difficult to figure out the placeholder class。不难,只需检查所选选项的类
      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2019-04-25
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      相关资源
      最近更新 更多