Выбор jquery, если параметр .value равен что-то, пометить выбранный

У меня есть вопрос о выборе jquery. В моем случае, как совместить, если option.value что-то равное, отметьте selected для него. Онлайн-код здесь

повторите код еще раз. Это вызвало Uncaught TypeError: Object #<HTMLOptionElement> has no method 'val', как работать как моя надежда? Спасибо.

<script type="text/javascript">
$(document).ready(function(){
    var num = 3;
    $("div#selection select.select option").each(function(){
        if((this).val()==num){
            $(this).attr("selected","selected");    
        }
    });
});
</script>
<div id="selection">
    <label>Label1:</label>
    <select class="select">
        <option value="1">V1</option>
        <option value="2">V2</option>
        <option value="3">V3</option>
    </select>
    <label>Label2:</label>
    <select class="select">
        <option value="4">U1</option>
        <option value="5">U2</option>
        <option value="6">U3</option>
    </select>
</div>

Ответы

Ответ 1

Вы сделали опечатку

Вместо (this).val() вы должны использовать $(this).val() в инструкции if. this относится к HTMLObject, $(this) относится к объекту jQuery. Поскольку метод .val() является частью структуры jQuery, вы не можете использовать его в HTMLObjects. Но я уверен, что вы это знали, потому что это очень похоже на небольшую опечатку.

Это должно работать:

$(document).ready(function(){
    var num = 3;
    $("div#selection select.select option").each(function(){
        if($(this).val()==num){ // EDITED THIS LINE
            $(this).attr("selected","selected");    
        }
    });
});

Edit

Вы можете оптимизировать цикл, добавив return false; (break; для ванильных циклов), когда вы нашли свой элемент, чтобы он не сохранял элементы цикла, пока мы уже "сделаны".

Однако вы должны посмотреть ответ Nicola Peluchetti на более эффективный и чистый код.

Ответ 2

У вас есть опечатка, и чтобы установить этот вариант, вы должны использовать prop(), а не attr(). в любом случае вы могли бы сделать

var num = 3;
$("div#selection select.select option[value="+num+"]").prop("selected", true);

скрипка здесь http://jsfiddle.net/YRBrp/

РЕДАКТИРОВАТЬ - опечатка, конечно, указывает Тим ​​С., вы должны использовать $(this).val(), а не (this).val()

Ответ 3

Ваша проблема начинается здесь.

$( "div # selection select.select option" ). each (function() {       если ( (это).val() == Num) {

измените его на

$("div#selection select.select").each(function(){
if($(this).val()==num){

и вся ваша проблема решена. Возможно, вы захотите изменить .each на .change, если вы думаете о запуске script при каждом изменении выбора.

Ответ 4

В первый раз, когда вы ссылаетесь на this, это не объект jQuery, это объект DOM, а объект DOM не имеет метода val(). Вы должны либо использовать this.value och $(this).val() попробовать следующее:

$("div#selection select.select option").each(function(){
        if($(this).val()==num){
            $(this).attr("selected","selected");    
        }
    });

Ответ 5

Ваш код работает хорошо. Просто обновите 'this' с помощью $(this). Если нет других выпадающих меню, вы можете опустить "выбор выбора div #". как показано ниже.

$(document).ready(function(){
    var num = 3;
    $("select option").each(function(){     
        if($(this).val()==num){
            $(this).attr("selected","selected");    
        }
    });
});

Ответ 6

попробуйте ниже

    $("div#selection select.select").val(num);

если поле выбора выбрано несколько, вы можете попробовать

    $("div#selection select.select option").each(function(){
      if($(this).val()==num){ 
        $(this).attr("selected", true);    
      }
   });