【问题标题】:How can I set a border around each of my select2 select box?如何在每个 select2 选择框周围设置边框?
【发布时间】:2017-03-27 16:28:32
【问题描述】:

我想用 jQuery 在每个选择框周围设置一个红色边框。但是还是不行:

http://jsfiddle.net/jEADR/3795/

<script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script> 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script>
 <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css">

<select class="select" style="width:300px">
        <option value="AL">Alabama</option>
        <option value="Am">Amalapuram</option>
        <option value="An">Anakapalli</option>
        <option value="Ak">Akkayapalem</option>
        <option value="WY">Wyoming</option>
    </select>
    <select class="select" style="width:300px">
        <option value="AL">Alabama</option>
        <option value="Am">Amalapuram</option>
        <option value="An">Anakapalli</option>
        <option value="Ak">Akkayapalem</option>
        <option value="WY">Wyoming</option>
    </select>

<script>
    $(".select").select2();
    $(".select").each(function() {
    $(this).siblings().find(".select2-container").css({"border-color": "red", "border-weight":"5px", "border-style":"solid"});
    });
</script>

【问题讨论】:

    标签: jquery select2


    【解决方案1】:

    首先,您的代码不起作用,因为select2-container 元素 兄弟姐妹,因此在它们上调用find() 以获取子元素不会返回任何内容。只需删除find() 调用,并将选择器提供给siblings()。另请注意,您可以缩短 border 规则,如下所示:

    $(".select").each(function() {
      $(this).siblings(".select2-container").css('border', '5px solid red');
    });
    

    但是,更重要的是,您应该注意,当您可以将规则直接放在 CSS 代码中时,为此使用 JS 代码有点多余:

    $(".select").select2();
    .select2-container {
      border: 5px solid red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script>
    <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css">
    
    <select class="select" style="width:300px">
      <option value="AL">Alabama</option>
      <option value="Am">Amalapuram</option>
      <option value="An">Anakapalli</option>
      <option value="Ak">Akkayapalem</option>
      <option value="WY">Wyoming</option>
    </select>
    <select class="select" style="width:300px">
      <option value="AL">Alabama</option>
      <option value="Am">Amalapuram</option>
      <option value="An">Anakapalli</option>
      <option value="Ak">Akkayapalem</option>
      <option value="WY">Wyoming</option>
    </select>

    【讨论】:

    • 不,我需要 jQuery,因为我有一些案例,如果我需要稍后使用类
    • 所以我必须能够突出显示我的选择框的特定兄弟。
    • 我为你更新了我的答案。我仍然至少建议您将所需的样式放在 CSS 类中并使用 addClass() 而不是直接将样式放在 JS 代码中。
    【解决方案2】:
    .select2-selection { border: 1px solid gold!important;}
    

    【讨论】:

    • 欢迎来到 Stack Overflow。没有任何解释的代码很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请编辑您的问题并解释它如何回答所提出的具体问题。见How to Answer
    • @Sfili_81 的批评总是很重要,但当社区已经验证了已接受的答案时,这一点尤其很重要。在什么条件下您的方法可能更受欢迎?您是否正在利用新功能? (看起来不是这样,但显然你不依赖脚本。)
    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多