2014-09-12 65 views
0

当radi按钮值为Agent时,我想隐藏div(AppliedCourse)。我写了下面的代码,但它不工作。 有什么想法?使用jquery隐藏div单选按钮选定值 - 不工作

$('#HearAboutUs').click(function() { 
    $("#AppliedCourse").toggle($('input[name=HearAboutUs]:checked').val()='Agent'); 
    }); 

<tr><td class="text"><input type="radio" name="HearAboutUs" value="Press">Press & Print media 
<input type="radio" name="HearAboutUs" value="Internet">Internet 
<input type="radio" name="HearAboutUs" value="Agent">Agent 
<input type="radio" name="HearAboutUs" value="Friend">Friend 
<input type="radio" name="HearAboutUs" value="Other" checked="checked">Other</td></tr> 
+3

尝试=='代理',也在哪里你的div? – Quantico 2014-09-12 17:02:51

+2

$('#HearAboutUs')的目标是一个ID为HearAboutUs的元素。我的例子中没有看到一个。修复Quantico指出的错误和它的工作原理http://jsfiddle.net/j08691/v6nnmtyx/ – j08691 2014-09-12 17:06:25

+0

还有你检查了你的控制台吗?我试图将你的代码复制到jsfiddle,并且有一堆错误。由于@ j08691表示你的身份证号码在哪里 – Quantico 2014-09-12 17:07:09

回答

3

无论你的HTML是不完整的或你的第一选择是错误的。有可能你的点击处理程序没有被调用,因为你没有元素的ID为'HeadAboutUs'。在这种情况下,您可能想要听取输入本身的点击。

另外,你的逻辑不太对。如果参数为false,则切换隐藏元素,所以您想使用!=来取消它。尝试:

$('input[name=HearAboutUs]').click(function() { 
    var inputValue = $('input[name=HearAboutUs]:checked').val() 
    $("#AppliedCourse").toggle(inputValue!='Agent'); 
}); 

我已经做了的jsfiddle与工作解决方案:http://jsfiddle.net/c045fn2m/2/

+0

我想你' “HearAboutUs'附近缺少引号 – Dan 2014-09-12 17:18:13

+0

谢谢@Dan,但我并不严格要求他们。”属性值必须是标识符或字符串。“来自:http://www.w3.org/TR/CSS21/selector.html#attribute - 选择器 – 2014-09-12 17:28:53

+0

谢谢@Regent我添加了更新的链接 – 2014-09-12 17:32:34

1

这里是小提琴:http://jsfiddle.net/L9bfddos/

<tr> 
<td class="text"> 
    <input type="radio" name="HearAboutUs" value="Press">Press & Print media 
    <input type="radio" name="HearAboutUs" value="Internet">Internet 
    <input type="radio" name="HearAboutUs" value="Agent">Agent 
    <input type="radio" name="HearAboutUs" value="Friend">Friend 
    <input type="radio" name="HearAboutUs" value="Other" checked="checked">Other 
</td> 

测试
$("input[name='HearAboutUs']").click(function() { 
var value = $('input[name=HearAboutUs]:checked').val(); 
if(value === 'Agent'){ 
    $('#AppliedCourse').hide(); 
} 
else{ 
    $('#AppliedCourse').show(); 
} 
}); 
+1

'$('#AppliedCourse')。toggle(value!== '代理人');'比if-else'短得多,但是以相同的方式运作 – Regent 2014-09-12 17:23:56

+0

是的,你说得对,当你试图尽快回答问题时会发生什么 – Sergey6116 2014-09-12 17:49:56

3

你的代码是寻找与ID HearAboutUs的元素,但是你没有这个页面上。

你确实有一堆输入与name="HearAboutUs"。如果你寻找这些,你将能够执行你的代码。

$("input[name='HearAboutUs']").click(function() { 
    var clicked = $(this).val(); //save value of the input that was clicked on 
    if(clicked == 'Agent'){ //check if that val is "Agent" 
     $('#AppliedCourse').hide(); 
    }else{ 
     $('#AppliedCourse').show(); 
    } 
}); 

JS Fiddle Demo

由@Regent提出另一种选择是用$('#AppliedCourse').toggle(clicked !== 'Agent');替换if/else语句。这也适用。

+0

为什么你不想使用'.toggle()'而不是'if-else'? – Regent 2014-09-12 17:26:42

+0

@Regent是啊我在另一个问题上看到了你的记录 - 这是一件好事理念! – Dan 2014-09-12 17:30:38

相关问题