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

如何获取按时间顺序最新选中的分组单选按钮?

获取用户最新选中的单选按钮

你遇到的问题本质是:jQuery的:checked选择器是按照DOM节点的顺序返回选中元素的,所以默认会拿到第一个被选中的a1,但你需要的是用户通过交互最新选中的那个单选按钮。解决这个问题的核心思路是通过监听单选按钮的change事件,实时记录用户刚选中的元素。

下面是具体的实现方案:

方案一:用变量维护最新选中的元素

这个方法简单直接,通过一个变量来存储用户最新选中的单选按钮:

// 页面加载完成后初始化
$(document).ready(function() {
  // 初始化:默认选中的最后一个a行单选按钮(如果需要的话)
  let latestChecked = $('input[type="radio"]:checked').last();

  // 监听所有单选按钮的change事件
  $('input[type="radio"]').on('change', function() {
    // 用户选中新的单选按钮时,更新变量
    latestChecked = $(this);
    // 这里可以即时查看结果
    console.log('最新选中的ID:', latestChecked.attr('id'));
  });

  // 在你需要获取最新选中的地方(比如你的fontPicker逻辑里)
  $('#fontPicker i').on('click', function() {
    if (latestChecked) {
      // 拿到最新选中的单选按钮ID
      const latestId = latestChecked.attr('id');
      console.log('当前最新选中的是:', latestId);
      // 执行你的后续逻辑
    }
  });
});

方案二:用全局数据存储(避免全局变量污染)

如果不想用全局变量,可以把最新元素存在document的data属性里:

$(document).ready(function() {
  // 初始化
  $(document).data('latestRadio', $('input[type="radio"]:checked').last());

  // 监听change事件
  $('input[type="radio"]').on('change', function() {
    $(document).data('latestRadio', $(this));
  });

  // 获取最新选中的元素
  $('#fontPicker i').on('click', function() {
    const latestChecked = $(document).data('latestRadio');
    if (latestChecked) {
      console.log('最新选中的ID:', latestChecked.attr('id'));
    }
  });
});

为什么这个方案可行?

单选按钮的change事件只会在用户主动选中某个选项时触发——当你选中b3时,a3会被自动取消选中,但a3不会触发change事件,只有b3会。所以每次触发change的元素,必然是用户刚刚选中的那个,我们只要把它记录下来,就能随时拿到最新的选中项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:46:42