javascript - jQuery,重复选择器

标签 javascript jquery

我有这段代码警告我选择器的重复 $("#demo-select") 使用:

    let demoSelect = $("#demo-select").val();
        if (demoSelect){

            $('#days_count').show();
        }

        $("#demo-select").change(function(){
            if (this.value){
                $('#days_count').show();
            } else {
                $('#days_count').hide();
            }

        });

我该如何编写该代码才能不重复它?

最佳答案

警告来自重复使用 $('#demo-select')。您可以创建一个变量来保存该值并重新使用它。这是首选,因为 DOM 访问是一个(相对)缓慢的操作,应尽可能避免。

let $demoSelect = $("#demo-select").change(function() {
  if (this.value) {
    $('#days_count').show();
  } else {
    $('#days_count').hide();
  }
});

if ($demoSelect.val()) {
  $('#days_count').show();
}

但是,您可以通过使用 toggle() 并在加载时触发 change 事件来避免该问题并使您的逻辑更加简洁,像这样:

$("#demo-select").change(function() {
  $('#days_count').toggle(!!this.value);
}).trigger('change');

关于javascript - jQuery,重复选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56959301/

相关文章:

javascript - 为什么即使我更改了服务器,我仍然在服务器中看到相同的 js 版本?

javascript - 如何使输入的宽度等于否。文字值(value)?

javascript - 如何使用 jQuery.getJSON() 读取远程 JSON 文件?

jQuery - 如何仅选择新页面的链接?

javascript - XMLHttpRequest 和 jQuery AJAX 方法之间的响应 header 差异

javascript - 单击时如何从链接中添加和删除类名?

javascript - Jquery,点击传递值

javascript - Angular 检查重复输入

javascript - Express和 Node : CORS fails

jquery - 在 jQuery Accordion 折叠栏上渲染列?