You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定jQuery代码转换为原生JavaScript?

把jQuery代码转换为原生JavaScript的解决方案

嘿,我来帮你搞定这两个jQuery转原生JS的问题,一步一步说清楚~

1. 单独转换$('#' + $(this).val()).show()

先拆解这段jQuery代码的逻辑:

  • $(this).val():获取触发事件的元素的value值
  • $('#' + ...):通过id选中对应的元素
  • .show():让元素显示(恢复其默认的display属性,或者设置为block)

对应的原生JavaScript代码可以写成:

document.getElementById(this.value).style.display = 'block';

或者如果想要更贴近jQuery的.show()行为(即恢复元素原本的display值,而不是强制设为block),可以写成:

document.getElementById(this.value).style.display = '';

解释下细节:

  • 在事件处理函数里,this直接指向触发事件的DOM元素,所以可以直接用this.value获取值,不用像jQuery那样包一层$(this)
  • document.getElementById()是原生JS中通过id选择元素最直接的方法,比querySelector('#xxx')性能更好

2. 完整转换jQuery的change事件代码

你的原生代码已经完成了一部分,但有两个小问题需要修正,同时补全最后一行:
首先看原jQuery代码的完整逻辑:

$('#optionselector').change(function(){ $('.option-type').hide(); $('#' + $(this).val()).show(); });

它的作用是:当optionselector元素的选中值变化时,先隐藏所有.option-type的元素,再显示id等于当前选中值的元素。

修正并补全后的完整原生代码

function addEventHandler(elem, eventType, handler) {
  if (elem.addEventListener)
    elem.addEventListener(eventType, handler, false);
  else if (elem.attachEvent)
    elem.attachEvent('on' + eventType, handler);
}

addEventHandler(document, 'DOMContentLoaded', function() {
  addEventHandler(document.getElementById('optionselector'), 'change', function() {
    // 替换$('.option-type').hide():选中所有.option-type元素并隐藏
    const optionTypeElements = document.querySelectorAll('.option-type');
    optionTypeElements.forEach(function(el) {
      el.style.display = 'none';
    });
    
    // 补全最后一行:显示对应id的元素
    const targetElementId = this.value;
    const targetElement = document.getElementById(targetElementId);
    if (targetElement) { // 增加判断避免找不到元素时报错
      targetElement.style.display = 'block';
      // 若要恢复默认display,替换为:targetElement.style.display = '';
    }
  });
});

关键修正点说明:

  • 你原来用的document.querySelector('.option-type')只会选中第一个匹配的元素,而jQuery的$('.option-type')会选中所有匹配元素,所以要改成document.querySelectorAll('.option-type'),然后遍历每个元素设置隐藏
  • 补全的最后一行逻辑和第一个问题一致,同时加了if (targetElement)的判断,防止当选中值对应的id不存在时出现JS报错,让代码更健壮

简化版(现代浏览器兼容)

如果不需要兼容IE8及以下的老旧浏览器,可以去掉兼容的事件绑定函数,代码会更简洁:

document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('optionselector').addEventListener('change', function() {
    // 隐藏所有.option-type元素
    document.querySelectorAll('.option-type').forEach(el => el.style.display = 'none');
    // 显示目标元素
    const target = document.getElementById(this.value);
    if (target) target.style.display = 'block';
  });
});

内容的提问来源于stack exchange,提问作者1878castle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:12:35