Как найти этот параметр выбора с помощью jquery

Я нашел этот код COLDFUSION для списка выбора, чтобы автоматически проверять список на наличие значения и, если его нет, установить «по умолчанию» для выбранного. Только у меня это не работает. Он попадает в cfif, и Script помещается на страницу, однако он никогда не находит JQUERY SELECTOR по умолчанию, чтобы пометить его как SELECTED.

#igShutdownTimer option[default="default"] не помечает value="60" как выбранное при первом запуске страницы, как я думал.

<div class="col-md-12">
    <label for="igShutdownTimer">Ignition ShutDown Timer:</label>
    <cfset pos = listfind(inputList,"1_uint ")>
    <cfif not pos>
        <script>
            $('##igShutdownTimer option[default="default"]').attr('selected','selected');
        </script>
    </cfif>
    <select form="configDetail" id="igShutdownTimer" name="1_uint" class="form-control" changeName="Ignition ShutDown Timer">
        <option value="0" <cfif pos and getParams.value[pos] is "0">selected</cfif>>0 Minutes</option>
        <option value="10" <cfif pos and getParams.value[pos] is "10">selected</cfif>>10 Minutes</option>
        <option value="20" <cfif pos and getParams.value[pos] is "20">selected</cfif>>20 minutes</option>
        <option value="30" <cfif pos and getParams.value[pos] is "30">selected</cfif>>30 Minutes</option>
        <option value="40" <cfif pos and getParams.value[pos] is "40">selected</cfif>>40 Minutes</option>
        <option value="50" <cfif pos and getParams.value[pos] is "50">selected</cfif>>50 Minutes</option>
        <option value="60" <cfif pos and getParams.value[pos] is "60">selected</cfif>  default="default">1 Hour</option>
        <option value="120" <cfif pos and getParams.value[pos] is "120">selected</cfif>>2 hours</option>
        <option value="240" <cfif pos and getParams.value[pos] is "240">selected</cfif>>4 Hours</option>
        <option value="480" <cfif pos and getParams.value[pos] is "480">selected</cfif>>8 Hours</option>
        <option value="720" <cfif pos and getParams.value[pos] is "720">selected</cfif>>12 hours</option>
        <option value="1440" <cfif pos and getParams.value[pos] is "1440">selected</cfif>>24 Hours</option>
        <option value="4294967295" <cfif pos and getParams.value[pos] is "4294967295">selected</cfif>>Unlimited</option>
    </select>
</div>

Это то, что печатается в источнике, и, как вы можете видеть, SELECTED не отображается для Default.

<script>
    $('#igShutdownTimer option[default="default"]').attr('selected','selected');
</script>
<select form="configDetail" id="igShutdownTimer" name="9X26889E92489D" class="form-control" changeName="Ignition ShutDown Timer">
    <option value="0" >0 Minutes</option>
    <option value="10" >10 Minutes</option>
    <option value="20" >20 minutes</option>
    <option value="30" >30 Minutes</option>
    <option value="40" >40 Minutes</option>
    <option value="50" >50 Minutes</option>
    <option value="60" default="default">1 Hour</option>
    <option value="120" >2 hours</option>
    <option value="240" >4 Hours</option>
    <option value="480" >8 Hours</option>
    <option value="720" >12 hours</option>
    <option value="1440" >24 Hours</option>
    <option value="4294967295" >Unlimited</option>
</select>

Может ли кто-нибудь помочь мне с необходимым селектором, чтобы найти <option value="60" default="default">1 Hour</option> в этом списке и любом другом списке, в котором может появиться default="default".


Рабочий код после ответа Рори:

<div class="col-md-12">
    <label for="igShutdownTimer">Ignition ShutDown Timer:</label>
    <cfset pos = listfind(inputList,"1_uint ")>
    <select form="configDetail" id="igShutdownTimer" name="#daCFC.enc('1_uint')#" class="form-control" changeName="Ignition ShutDown Timer">
        <option value="0" <cfif pos and getParams.value[pos] is "0">selected</cfif>>0 Minutes</option>
        <option value="10" <cfif pos and getParams.value[pos] is "10">selected</cfif>>10 Minutes</option>
        <option value="20" <cfif pos and getParams.value[pos] is "20">selected</cfif>>20 minutes</option>
        <option value="30" <cfif pos and getParams.value[pos] is "30">selected</cfif>>30 Minutes</option>
        <option value="40" <cfif pos and getParams.value[pos] is "40">selected</cfif>>40 Minutes</option>
        <option value="50" <cfif pos and getParams.value[pos] is "50">selected</cfif>>50 Minutes</option>
        <option value="60" class="default" <cfif pos and getParams.value[pos] is "60">selected</cfif>>1 Hour</option>
        <option value="120" <cfif pos and getParams.value[pos] is "120">selected</cfif>>2 hours</option>
        <option value="240" <cfif pos and getParams.value[pos] is "240">selected</cfif>>4 Hours</option>
        <option value="480" <cfif pos and getParams.value[pos] is "480">selected</cfif>>8 Hours</option>
        <option value="720" <cfif pos and getParams.value[pos] is "720">selected</cfif>>12 hours</option>
        <option value="1440" <cfif pos and getParams.value[pos] is "1440">selected</cfif>>24 Hours</option>
        <option value="4294967295" <cfif pos and getParams.value[pos] is "4294967295">selected</cfif>>Unlimited</option>
    </select>
</div>
<cfif not pos>
    <script>
        $('##igShutdownTimer option.default').prop('selected', true);
    </script>
</cfif>

person shaun    schedule 24.03.2016    source источник
comment
Вероятно, следует использовать .prop('selected', true) вместо .attr('selected','selected')... но jQuery все равно не может решить об этом   -  person Tibrogargan    schedule 25.03.2016


Ответы (1)


Вам нужно поместить свой код в обработчик document.ready, чтобы он выполнялся при загрузке DOM. В настоящее время ваш блок script выполняется до появления на странице элемента `select:

<script>
    $(function() {
        $('#igShutdownTimer option[default="default"]').attr('selected','selected');
    });
</script>

Тем не менее, было бы гораздо лучше использовать prop() вместо attr(), а также выбрать option по умолчанию с помощью класса, поскольку создание собственных нестандартных атрибутов будет означать, что ваш HTML недействителен. Что-то вроде этого:

<select form="configDetail" id="igShutdownTimer" name="9X26889E92489D" class="form-control">
    <option value="0">0 Minutes</option>
    <!-- other options... -->
    <option value="60" class="default">1 Hour</option>
</select>
$(function() {
    $('#igShutdownTimer option.default').prop('selected', true);
});
person Rory McCrossan    schedule 24.03.2016
comment
версия дешевого человека: поменяйте местами тег ‹select› и тег ‹cfif› - person Tibrogargan; 25.03.2016
comment
Я реализовал все, что вы упомянули, в том числе поместил скрипт cfif под div, который будет выполняться после выбора, где в DOM, а не перед элементами, где в DOM - person shaun; 25.03.2016