Как я могу удалить выбор опции без значения? - PullRequest
0 голосов
/ 05 ноября 2019

У меня возникают проблемы при попытке удалить опцию или скрыть первое значение опции из кода Ransack.

Не могли бы вы помочь мне решить эту проблему?

У меня есть этот HTMLКОД

<select id="q_c_0_a_0_name">
 <option value></option>
 <option value="lastanem1">First Lastname</option>
 <option value="lastname2">Second Lastname</option>
 ...
 <option value="xxxxxxxxx">Other value</option>
</select>

Я пытаюсь удалить опцию или скрыть первую опцию, потому что Ransack gem генерирует следующий HTML-код:

<select id="q_c_0_a_0_name">
 <option value="name">     Filter by Name</option>
 <option value="lastanem1">Filter by First Lastname</option>
 <option value="lastname2">Filter by Second Lastname</option>
 ...
 <option value="xxxxxxxxx">Filter by Other value</option>
</select>

Я пробовал этот код JQuery:

$(function(){
  $("#q_c_0_a_0_name option[value=]").style.display = "none";
});  

Также пробовал этот код JQuery:

$(function(){
  $("#q_c_0_a_0_name option[value=""]").style.display = "none";
});  

Ответы [ 4 ]

1 голос
/ 05 ноября 2019

Использование :first / :first-child

$("#q_c_0_a_0_name option:first").remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select id="q_c_0_a_0_name">
 <option value></option>
 <option value="lastanem1">First Lastname</option>
 <option value="lastname2">Second Lastname</option>
 <option value="xxxxxxxxx">Other value</option>
</select>
1 голос
/ 05 ноября 2019

Вы можете удалить первый параметр, как показано ниже, независимо от значения, которое он содержит.

$("#q_c_0_a_0_name").find("option").eq(0).remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="q_c_0_a_0_name">
 <option value="name">     Filter by Name</option>
 <option value="lastanem1">Filter by First Lastname</option>
 <option value="lastname2">Filter by Second Lastname</option>
 ...
 <option value="xxxxxxxxx">Filter by Other value</option>
</select>
0 голосов
/ 05 ноября 2019

Если вы хотите удалить первую опцию, используйте эту

$(document).ready(function()
    {
       $("#q_c_0_a_0_name").children().first().remove();           
    });

Если вы хотите удалить первую опцию после нажатия на поле выбора, используйте эту

$(document).ready(function()
{
    var removed=false;       
    $(document).on("click","select",function()
    {
        if(!removed)
        {
            $(this).children().first().remove();
            removed=true;
        }


    });
});
0 голосов
/ 05 ноября 2019

Попробуйте этот код

$("#q_c_0_a_0_name option[value='name']").remove();
...