jquery单选按钮单击事件问题

时间:2010-05-12 16:24:55

标签: jquery jquery-selectors

我在jQuery中有以下代码用于一组单选按钮,这些按钮在单击时都具有相同的行为(它们显示一些隐藏的字段)。我之前为每个单独的选择器复制了相同的代码,所以我只使用了多个选择器,如下面的代码所示。然而,这并没有真正起作用,因为当几个单选按钮在同一页面上时,正确的显示/隐藏行为似乎搞砸了。这是因为我在live()中使用$(this)吗?或者还有别的我做错了吗?感谢您的帮助,只是尽量保持这段代码尽可能干净,希望避免为每个选择器反复复制它!

//event handler for radio fields with subsections
        $("input[name='registered'], input[name='voted'], input[name='report'], input[name='newsletter']").live("click", function(){
            //check if value is true
            if ($(this + ":checked").val() == '1') 
                $(this).parent().find('span.hidden').fadeIn("slow");
            else 
                $(this).parent().find('span.hidden').hide();
        });

1 个答案:

答案 0 :(得分:1)

if语句中的选择器不正确。尝试:

if ($(this).filter(':checked').val() == '1')

甚至

if ($(this).val() == '1')

你拥有它的方式,它将字符串化this元素并将其添加到“已检查”。显然不是你想要的。你想要的是查看被点击的元素 - 只有一个将触发事件,因此this将对应于被点击的元素,因此不再需要过滤器,我认为 - 具有正确的值。