javascript - Jquery 更改选择选项取决于 anchor 更改

标签 javascript jquery css select

我有这段用于选择选项的代码:

<select class="select-box" name="select-choice-month" id="select-locations">
  <option id="1">Select Region</option>
  <option id="2" value="eu">Europe</option>
  <option id="3" value="nam">North America</option>
  <option id="4" value="sam">Latin America</option>
  <option id="5" value="aspa">Asia/Pacific</option>
</select>

在选择更改时,我已经必须像这样更改它的背景(显示或隐藏特定的 div):

$('#select-locations').change(function() {
    $('#form1, #form2, #form3, #form4, #form5').hide();
    $('#form' + $(this).find('option:selected').attr('id')).show();
});

但是,现在我有了迷你导航,它也显示或隐藏相同的 div

<div id="map-menu">
    <a href="#" id="3">North America</a>
    <a href="#" id="4">Latin America</a>
    <a href="#" id="5">Asia/Pacific</a>
</div><!-- end of map-menu -->

对此的 Jquery:

$('#map-menu a').click(function() {
    $('#form1, #form2, #form3, #form4, #form5').hide();
    $('#form' + $(this).attr('id')).show();
});

单击 anchor 并更改 div 以更改所选选项的输出(名称)时,如何实现?在第一个有效的示例中,但是当我通过 anchor 更改它时它不起作用 ...

感谢任何答案

最佳答案

如果我正确阅读了您的问题,那么我认为以下内容应该可以解决您的问题并减少代码重复。

$('#map-menu a').click(function() {
    $('#select-locations').val(this.id).change();
});

它将监听对 a 的点击,然后将选择列表的值设置为被点击的 id。一旦完成,它将触发选择列表上的 change 事件,从而触发您的 change 监听器。

还有关于您的 id 的注释,它们不应该只是一个数字:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

来源:https://stackoverflow.com/a/703790/461813

根据评论更新工作

如果你想使用你当前的 HTML 那么它会是这样的:

$('#map-menu a').click(function() {
    var select = $('#select-locations');
    var option_to_select = $('option[id="' + this.id + '"]', select);
    select.val(option_to_select.val()).change();
});

但应该注意的是,您的代码目前没有唯一的 id,因此我建议您将它们命名为:

select_option_1
anchor_option_1

那么上面的代码就变成了:

$('#map-menu a').click(function() {
    var option_id = this.id.replace('anchor', 'select');
    var select = $('#select-locations');
    var option_to_select = $('option[id="' + option_id + '"]', select);
    select.val(option_to_select.val()).change();
});

这里是一个你可以运行的 jsFiddle:http://jsfiddle.net/6tHnj/

关于javascript - Jquery 更改选择选项取决于 anchor 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952491/

相关文章:

jquery - Bootstrap 导航栏没有填满窗口顶部,

javascript - Meteor JS - 在特定模板上显示 DOM 元素

javascript - 公共(public)变量未正确更改

jquery - 管理.common.js :21 Uncaught ReferenceError: $ is not defined

html - 在 CSS 中缩放 anchor 标记

jQuery:如果标签包含特定类,则 append HTML

javascript - 为什么 document.getElementsByClassName 在这里返回一个数组?

javascript - 创建 map 后向 Google map v3 添加标记

javascript - d3.js - 多折线图不更新圆圈

javascript - 如何使用 JS 动态添加 HTML(在字符串中?)