Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 选中复选框时更新html选择_Jquery_Checkbox_Onchange - Fatal编程技术网

Jquery 选中复选框时更新html选择

Jquery 选中复选框时更新html选择,jquery,checkbox,onchange,Jquery,Checkbox,Onchange,我的js代码有一种奇怪的行为。 我在这里做了一个JsFiddle: 当我选中一个特定的复选框时,我想更新一个select的“option selected” 实际上我必须点击3次才能触发事件 我选中复选框=>什么都没有发生 我取消选中复选框=>什么都没有发生 我选中复选框=>它可以工作 这是我的HTML <fieldset class="attribute_fieldset" rel=""> <input class="left cb_group_5" type="ch

我的js代码有一种奇怪的行为。 我在这里做了一个JsFiddle:

当我选中一个特定的复选框时,我想更新一个select的“option selected”

实际上我必须点击3次才能触发事件

我选中复选框=>什么都没有发生 我取消选中复选框=>什么都没有发生 我选中复选框=>它可以工作

这是我的HTML

<fieldset class="attribute_fieldset" rel="">
    <input class="left cb_group_5" type="checkbox" value="group_5" /> 

    <select name="group_5" id="group_5" class="attribute_select hidden">
        <option value="23" selected="selected" title="non">non</option>
        <option value="24" title="oui">oui</option>
    </select>
</fieldset>

我做错了什么?请帮助我社区=)

如果我没弄错,您希望您的下拉列表根据您是否单击了复选框进行更改

在代码中有一行

$(目标+'option')。removeAttr('selected')

我不知道你为什么要删除从所有选项中选择的属性,如果你删除它,你的代码就可以正常工作

$('.attribute_fieldset input[type=checkbox]').change(function(){

    var target = '#'+$(this).val();


    if(this.checked)
    {
        $(target+' option[title="oui"]').attr('selected','selected');
    }
    else
    {
        $(target+' option[title="non"]').attr('selected','selected');
    }


});

还有一点值得注意的是,最好不要一直以您自己的方式引用元素,更有效的方法是这样的

$('.attribute_fieldset input[type=checkbox]').change(function(){

    var target = $('#'+$(this).val());


    if(this.checked)
    {
        $('option[title="oui"]',target).attr('selected','selected');

    }
    else
    {
        $('option[title="non"]',target).attr('selected','selected');
    }


});

我在小提琴上没有看到任何问题。@karthikr,你必须点击3次复选框来更改选择。。。相反once@f00bar请讲英语。不,它马上就起作用了。首先单击,然后更改“选择”下拉列表值。我在chromeIts上工作,只需点击一下即可!的确它起作用了。谢谢你的第二个选择,它更干净。
$('.attribute_fieldset input[type=checkbox]').change(function(){

    var target = $('#'+$(this).val());


    if(this.checked)
    {
        $('option[title="oui"]',target).attr('selected','selected');

    }
    else
    {
        $('option[title="non"]',target).attr('selected','selected');
    }


});