使用jQuery删除单选按钮

使用jQuery删除单选按钮,jquery,asp.net,html,html-select,Jquery,Asp.net,Html,Html Select,表单上有一组或多组单选按钮。该值可以以值^开始。一旦选择了另一个值,^将不再可用,因此需要隐藏它的div。以下是源代码和html,以及JSFIDLE中的链接: html $ C0900A 员工asmt精神状态:回忆当前季节 (0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900B 员工asmt精神状态:回忆房间位置 (0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900C 员工asmt精神状态:回忆员工姓名/面孔 (0)未选中(

表单上有一组或多组单选按钮。该值可以以值^开始。一旦选择了另一个值,^将不再可用,因此需要隐藏它的div。以下是源代码和html,以及JSFIDLE中的链接:

html

$
C0900A
员工asmt精神状态:回忆当前季节
(0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900B 员工asmt精神状态:回忆房间位置
(0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900C 员工asmt精神状态:回忆员工姓名/面孔
(0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900D 员工asmt精神状态:在疗养院回忆
(0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式) C0900Z 员工asmt精神状态:以上均未召回
(0)未选中(否) (1) 选中(是) (-)未评估 (^)空白(跳过模式)
它不起作用,因为一个页面上只能有一个
id
。jQuery假定这一点,并且只选择一个单选按钮,因此永远不会找到任何值为“^”的单选按钮

只需将其更改为类,它就会工作(或者使用其他类型的标识,如
名称

您也可以选择使用CSS选择器:

$("."+theClass+"[value='^']").parent().hide();

它不起作用,因为一个页面上只能有一个
id
。jQuery假定这一点,并且只选择一个单选按钮,因此永远不会找到任何值为“^”的单选按钮

只需将其更改为类,它就会工作(或者使用其他类型的标识,如
名称

您也可以选择使用CSS选择器:

$("."+theClass+"[value='^']").parent().hide();

您的代码有各种各样的错误:

  • 没有隐式
    $this
    变量
  • 没有
    .id()
    函数
  • 只要使用if语句,就不需要过滤使用id选择器选择的jquery对象
  • 正如其他人指出的,DOM id必须是唯一的,所以如果我在代码中留下id选择器,它会选择错误的元素2/3
  • 当当前元素为this时,无需在事件处理程序中重新选择当前元素
  • 吹毛求疵:将jquery对象的变量前缀为
    $
    ,以提高可读性
编辑:
我的代码糟透了,我给你留下的只是评论

你的代码全坏了:

  • 没有隐式
    $this
    变量
  • 没有
    .id()
    函数
  • 只要使用if语句,就不需要过滤使用id选择器选择的jquery对象
  • 正如其他人指出的,DOM id必须是唯一的,所以如果我在代码中留下id选择器,它会选择错误的元素2/3
  • 当当前元素为this时,无需在事件处理程序中重新选择当前元素
  • 吹毛求疵:将jquery对象的变量前缀为
    $
    ,以提高可读性
编辑:
我的代码糟透了,我给你留下的只是注释

你肯定应该修复多个id问题,这是无效的HTML,可能会导致不希望的和意外的行为(正如其他人已经提到的)

但是,以下内容不使用按id选择,并且在更改任何其他同级时,将隐藏组中具有值=
^
最后一个

$('.tristateRadio').bind('change', function() {
    $(this).parent().siblings(':last').hide();
});

问题中的原始代码不起作用,因为
$this
未定义。我认为您的意思可能是
$(this)
,以便在jQuery中包装本机对象。这些类型的错误通常显示在浏览器控制台或对话框中,并且是调试JavaScript时首先要查看的地方。

您肯定应该解决多个id问题,这是无效的HTML,可能会导致不希望的和意外的行为(正如其他人已经提到的)

但是,以下内容不使用按id选择,并且在更改任何其他同级时,将隐藏组中具有值=
^
最后一个

$('.tristateRadio').bind('change', function() {
    $(this).parent().siblings(':last').hide();
});

问题中的原始代码不起作用,因为
$this
未定义。我认为您的意思可能是
$(this)
,以便在jQuery中包装本机对象。这些类型的错误通常显示在浏览器控制台或对话框中,并且是调试JavaScript时首先要查看的地方。

您介意将其发布在JSFIDLE.net上吗?这与您的上一个问题不一样吗?()您的HTML无效。您的元素有多个重复的id,id属性应始终是唯一的。除此之外,请明确你的要求,这很难理解,我很乐意帮助你,干杯!Html验证程序:()不要得到意外的结果,然后责怪它不工作的浏览器,首先确保您的Html是有效的。您介意将此发布到JSFIDLE.net上吗?这与您的上一个问题类似吗?()您的HTML无效。您的元素有多个重复的id,id属性应始终是唯一的。除此之外,请明确你的要求,这很难理解,我很乐意帮助你,干杯!Html验证程序:()如果没有得到意外的结果,然后责怪它不工作的浏览器,请首先确保您的Html是有效的。“一旦选择了另一个值,^就不再可行,因此需要隐藏它的div。”-因为您不理解问题,因此,无法回答。我认为OP要求在您选择除^以外的选项时删除^。当你重新开始的时候就不会了
$('.tristateRadio').bind('change', function() {
    $(this).parent().siblings(':last').hide();
});