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

点击两个星级评分系统均输出第二个fieldset父ID的问题求助

解决星级评分系统点击后输出错误fieldset ID的问题

嘿,我明白你遇到的问题了——这其实是因为你用parent()只获取了当前radio的直接父元素,而不是它所在的那个fieldset祖先元素。咱们一步步来解决:

首先先明确你的问题场景:

现有两个星级评分系统,每个系统的父级fieldset元素拥有不同的ID。期望实现点击第一个星级评分系统时输出其所在父级fieldset的ID,点击第二个时输出对应父级fieldset的ID,但实际操作中,两个评分系统点击后均输出第二个(最后一个)fieldset的ID。当前使用的代码如下:$(document).on('change', 'input[type="radio"]', function (e) { console.log($(this).parent().attr('id')); });

问题根源

星级评分的radio按钮通常会被包裹在<label>标签里,所以$(this).parent()拿到的是radio的直接父元素(也就是label),而不是外层的fieldset。如果label本身没有设置ID,jQuery找不到对应属性时,可能会因为DOM遍历的意外逻辑返回错误的元素ID,就出现了你看到的“都输出最后一个fieldset ID”的情况。

修正方案

把parent()换成closest('fieldset')——这个方法会从当前radio元素开始,向上遍历DOM树,精准找到最近的匹配fieldset祖先元素,完美适配你的需求。

修正后的代码:

$(document).on('change', 'input[type="radio"]', function (e) {
    console.log($(this).closest('fieldset').attr('id'));
});

更严谨的版本(可选)

如果想避免找不到fieldset时输出undefined,可以加个简单的判断:

$(document).on('change', 'input[type="radio"]', function (e) {
    const targetFieldset = $(this).closest('fieldset');
    if (targetFieldset.length) {
        console.log(targetFieldset.attr('id'));
    } else {
        console.log('未找到对应的fieldset容器');
    }
});

试试这个方案,应该就能正确输出每个评分系统对应的fieldset ID了!

内容的提问来源于stack exchange,提问作者Mr. PV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:20:49