Выбор 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);
}
});