2016-03-22 2 views
0

Пожалуйста, найдите jsfiddleJQuery - динамически меняется текст опция не работает

https://jsfiddle.net/qs008so7/

У меня есть окно опций в HTML, и я пытаюсь установить опцию с помощью JQuery. Но его не работает. Пожалуйста, найдите код ниже.

Если я вызываю код в консоли, и я могу видеть, что ожидаемый html возвращается. Значит, изменения должным образом влияют на его DOM, но это не отражается в пользовательском интерфейсе.. Вы можете увидеть мою jfiddle.

HTML:

<select class="form-control" name="test" id="test"> 
    <option value="0">Disabled</option> 
    <option value="1">Enabled</option> 
</select> 

JS:

setGivenOption(test,"Enabled"); 
setGivenOption(test,"Disabled"); 

function setGivenOption(elementId, option) { 
    //Make all the old selections to null 
    $(elementId).each(function() { 
     $('option', this).each(function() { 
      $(this).attr('selected', null); 
     }); 
    }); 
    //set the given option 
    $(elementId).find(">option:contains('" + option + "')").attr("selected", "selected"); 
} 

Спасибо.

+2

В качестве дополнительной заметки вы должны подумать о своем имени параметра 'elementId'. В вашем примере кода вы * не * передаете id, а скорее сам элемент –

ответ

1

Вы где почти нет: Попробуйте, как этот https://jsfiddle.net/q5886d5o/1/

Update после @ Chips_100 комментарии

setGivenOption("test","Disabled"); 
setGivenOption("test","Enabled"); 

function setGivenOption(elementId, option) { 
    //Make all the old selections to null 
    $('#' + elementId).children('option').each(function() { 
     $(this).attr('selected', null); 
    }); 
    //set the given option 
    $('#' + elementId).children("option:contains('" + option + "')").attr("selected", "selected"); 
} 
+0

Спасибо Caramba. См. Мое недавнее изменение. В вашем jfiddle, похоже, что он обновляется. Но см. Мой jfiddle, он не обновляется. DOM обновляется правильно, но он не находит отражение в пользовательском интерфейсе браузера. – JavaUser

+0

@JavaUser в вашей скрипке Я не вижу, чтобы DOM обновлялся – caramba

+0

Извините. После добавления jquery все работает нормально. Можете ли вы проверить один раз. – JavaUser

1

Просто

$(elementId).find('option:contains(' + option + ')').attr('selected', true); 

Это будет diselect бы это ни был выбран, и выберите новый option

+0

да просто глядя, что текст будет работать в DOM, но не отражен в браузере. Пожалуйста, см. Мои недавние изменения и jfiddle – JavaUser

+0

Это потому, что ваш jsfiddle, кажется, не загружает jquery, см. Этот http://jsfiddle.net/A8Gq4/187/ –

+0

Как обновить элемент опции html? – JavaUser

Смежные вопросы