jQuery 关于更改问题

标签 jquery

您好,我有以下代码(HTML + jQuery):

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $("#btn_CSV, #btn_XLS").hide();
                $('#FileType').on('change', function() {
                    var selectedItem = $('#FileType option:selected').index();       
                    if(selectedItem === 1){
                        $('#btn_XLS').hide();
                        $('#btn_CSV').show();
                    }else if(selectedItem === 2){
                        $('#btn_XLS').show();
                        $('#btn_CSV').hide();
                    }
                });
                $("#selector").on('click', function() {
                    $('#FileType').val("CSV");
                });
            });
        </script>
    </head>
    <body>
        <div>
            <button id="selector">Select CSV</button>
            <select id="FileType" >
                <option value="default" disabled="disabled" selected="selected">--Select option--</option>
                <option value="CSV">CSV</option>
                <option value="XLS">XLS</option>
            </select>
            <button id="btn_CSV">CSV</button>
            <button id="btn_XLS">XLS</button>
        </div>
    </body>
</html>

如果我从下拉列表中选择“CSV”,则会出现一个标有“CSV”的按钮,on('change') jQuery 事件有效,但如果我在页面加载后单击“选择 CSV”按钮,则 CSV 选项将在下拉列表已选择,但 CSV 按钮未出现。如何使 on(change) 事件也适用于“选择 CSV”按钮单击的下拉菜单?

谢谢。

最佳答案

这非常简单 - 只需在设置值后手动触发 change 事件即可,即:

$('#FileType').val("CSV").trigger("change");

当您通过 .val() 操作值时,change 事件不会触发的原因是该事件仅由用户交互触发,而不是以编程方式触发。因此,JS 的值更改不会被识别为 change 事件(换句话说,change 事件不会被触发)。这需要使用 .trigger() 手动触发事件;)

请参阅下面的工作片段:

$(document).ready(function() {
  $("#btn_CSV, #btn_XLS").hide();
  $('#FileType').on('change', function() {
    var selectedItem = $('#FileType option:selected').index();
    if (selectedItem === 1) {
      $('#btn_XLS').hide();
      $('#btn_CSV').show();
    } else if (selectedItem === 2) {
      $('#btn_XLS').show();
      $('#btn_CSV').hide();
    }
  });
  $("#selector").on('click', function() {
    $('#FileType').val("CSV").trigger("change");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <button id="selector">Select CSV</button>
  <select id="FileType">
    <option value="default" disabled="disabled" selected="selected">--Select option--</option>
    <option value="CSV">CSV</option>
    <option value="XLS">XLS</option>
  </select>
  <button id="btn_CSV">CSV</button>
  <button id="btn_XLS">XLS</button>
</div>

关于jQuery 关于更改问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374624/

相关文章:

php - jQuery 相当于 PHP 的 strtr

javascript - 将一个 div 分成两部分,一半显示在固定 div 下方,一半显示在上方

javascript - 在javascript中解析json编码数组

php - 如何创建一个php(jquery)幻灯片切换信息目录

jquery - Zeroclipboard 通过 jquery 触发点击事件

javascript - 仅当来自特定链接时才在页面上显示 div

jquery - 按钮禁用效果在第一次单击后不起作用

Jquery 如果 div 有 value1-10 添加类

jquery - 设置新元素的位置,同时悬停元素

javascript - 用 jQuery 替换页面上的字符