0

我的 js 代码有一个奇怪的行为。我在这里做一个 JsFiddle:http: //jsfiddle.net/wf8G6/2/

当我选中一个特定的复选框时,我想更新一个选择的“选择的选项”......

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

我选中复选框 => 没有任何反应我取消选中 checkox => 没有任何反应我选中复选框 => 它有效...

这是我的 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>

这是我的 JS

//if we check a checkbox, we trigger a click on the select below
$('.attribute_fieldset input[type=checkbox]').change(function () {
    var target = '#' + $(this).val();
    $(target + ' option').removeAttr('selected');
    if (this.checked) {
        $(target + ' option[title="oui"]').attr('selected', 'selected');
    } else {
        $(target + ' option[title="non"]').attr('selected', 'selected');
    }
    $(target).trigger('change');
});

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

4

1 回答 1

1

如果我说对了,您希望您的下拉菜单根据您是否单击复选框而更改。

在您的代码中,您有一行

$(target + ' 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');
    }


});

http://jsfiddle.net/wf8G6/3/

另外,最好不要以你的方式继续引用你的元素,更有效的方法是这样的

$('.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');
    }


});
于 2013-10-18T14:32:13.907 回答