Установка выбора маркировкой с помощью jQuery в 1,4

В jQuery 1.3.2, следующих работах:

<select id="c">
  <option value="325">Red</option>
  <option value="833">Purple</option>
</select>

$('#c').val('Red');

И это изменяет выбор на опцию с КРАСНЫМ как ее маркировка. В jQuery 1.4 это перестало работать. Как я могу получить тот же результат в 1,4? Действительно ли это было ошибкой в 1,3 версиях?

6
задан Stomped 24 February 2010 в 07:52
поделиться

4 ответа

Вы должны сделать это следующим образом:

$('option:contains("Red")', '#c')[0].selected = true

ИЗМЕНИТЬ

@Tomalak

Если ярлыки не исключают друг друга, вам нужно перепишите селектор:

$.fn.labselect = function(str) {
    $('option', this).filter(function() {
       return $(this).text() == str;
    })[0].selected = true;

    return this;
};

// Use it like this
$('#c').labselect('Red');
12
ответ дан 8 December 2019 в 17:21
поделиться
$('#c').val('325');

или

// earlier - define a text-equals selector
jQuery.extend(jQuery.expr[":"], {
  "text-equals": function (a, i, m) {
    return (a.textContent||a.innerText||jQuery(a).text()||'')==m[3];
  }
});

// later - use it
$red = $('#c option:text-equals(Red)');
$('#c').val($red.val());

Пользовательский селектор - это одна из возможностей. Вы также можете сделать то же самое, например, в обратном вызове filter () .

1
ответ дан 8 December 2019 в 17:21
поделиться

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

$('#c').val("325");
-1
ответ дан 8 December 2019 в 17:21
поделиться
$('#c').val('Red');

не должен был (имхо) работать в jQuery 1.3, потому что "Red" не является значением. "325" является. Что это делает:

$('#c').val("325");
2
ответ дан 8 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: