首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery select option last无效

jQuery select option last无效
EN

Stack Overflow用户
提问于 2015-05-21 03:07:43
回答 3查看 213关注 0票数 0

我有一个按钮和一个选项列表。这个想法是,当用户单击该按钮时,默认选项从禁用更改为最大值。和oposite -如果未选中输入,则默认设置再次禁用。但是该值返回未定义。如果我将第一个和最后一个更改为数值,一切都会正常工作。怎么了?

代码语言:javascript
复制
<input class="input" type="checkbox" value="1" name="select-pot[]">
<select id="select" name="q-count[]">
<option disabled selected> -- choose -- </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>

jQuery(function(){  

    jQuery(".input").click(function(){      

        var thefirst = jQuery(this).next('#select option:first').val();
        var thelast = jQuery(this).next('#select option:last').val();

        if( jQuery(this).is(':checked') )               
            jQuery(this).next('#select').val(thelast);      
        else        
            jQuery(this).next('#select').val(thefirst);     
    }); 
});
EN

回答 3

Stack Overflow用户

发布于 2015-05-21 03:11:48

.next()获取下一个同级,因此您需要获取select并在之后使用.find().children()

代码语言:javascript
复制
var thefirst = jQuery(this).next('#select').find('option:first').val();
var thelast = jQuery(this).next('#select').find('option:last').val();
票数 1
EN

Stack Overflow用户

发布于 2015-05-21 03:15:04

由于ID必须是唯一的,所以没有必要这样做:

代码语言:javascript
复制
jQuery(this).next('#select option:first')

什么时候

代码语言:javascript
复制
jQuery('#select option:first')

这样就足够了,再加上.next()会在这里失败,因为它会计算元素的兄弟元素,并对您传递的任何内容进行过滤,但您的过滤器会导致它不匹配任何内容。

取而代之的是:

代码语言:javascript
复制
jQuery(".input").click(function () {
    var thefirst = jQuery('#select option:first').val();
    var thelast = jQuery('#select option:last').val();
    if (jQuery(this).is(':checked')) jQuery('#select').val(thelast);
    else jQuery('#select').val(thefirst);
});
票数 1
EN

Stack Overflow用户

发布于 2015-05-21 03:23:10

面向未来查看器的普通javascript替代方案

代码语言:javascript
复制
(function () {
    "use strict";
    var inputs = document.getElementsByClassName('input'), input;
    for (var i = 0; input = inputs[i]; i++) {
        input.addEventListener('click', function (e) {
            e.target.nextElementSibling.lastElementChild.selected = e.target.checked;
            e.target.nextElementSibling.firstElementChild.selected = !e.target.checked;
        }, false);
    }
})();
代码语言:javascript
复制
<input class="input" type="checkbox" value="1" name="select-pot[]">
<select id="select" name="q-count[]">
    <option disabled selected>-- choose --</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
</select>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30358355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档