2014-11-04 68 views
2

我试图用jQuery的.toggle()来显示和隐藏三个div中的一个。该div有独特的ID,并且div被切换的决定取决于三个单选按钮中的哪一个被选中。三个单选按钮的值对应于div的ID。所以如果有人点击-1收音机,应该切换编号为cMB_0292_A07.m1的div。使用输入值作为编号切换问题编号

但是我没有收到任何回应,也没有我尝试过的调试器错误报告。哪里不对?

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script> 
     function showdiv(obj) { 
      var n = obj.name; 
      var v = $("input:radio[name='" + n + "']:checked").val(); 
      alert(v); 
      $("#" + v).toggle(); 
     } 
    </script> 
</head> 
<body> 
    <input name="cMB_0292_A07" value="cMB_0292_A07.m1" onclick="showdiv(this);" type="radio">-1 
    <input name="cMB_0292_A07" value="cMB_0292_A07.0" onclick="showdiv(this);" type="radio">0 
    <input name="cMB_0292_A07" value="cMB_0292_A07.p1" onclick="showdiv(this);" type="radio">+1 
    <div id="cMB_0292_A07.m1" style="display: none">minus1</div> 
    <div id="cMB_0292_A07.0" style="display: none">zero</div> 
    <div id="cMB_0292_A07.p1" style="display: none">plus1</div> 
</body> 
</html> 

回答

3

这实际上是一个两部分问题

首先,你应该有内部的ID .

其次,jQuery是看到的是:$('#ID.CLASS') 据搜索DOM寻找ID:cMB_0292_A07然后一个子类的m1例如。

您可以通过删除ID中的句点或使用正则表达式选择器[id=""]来解决此问题。

$('[id="' + v + '"]').toggle(); 

jsFiddle DEMO


其他图片的标题说明,不使用onClick事件。最好分开您的业务逻辑&表示逻辑。使用jQuery .on('click', function() {});事件!

+1

不仅直列JS'onclick'已经过时,'VAR N = obj.name; var v = $(“input:radio [name ='”+ n +“']:checked”)。val();'是多余的代码(而不是简单的'var v = obj.value;')。 – Regent 2014-11-04 15:51:07

+1

我花了四个小时试图解决这个问题。当然!!! ID是从文件名生成的,这就是它们的原因。在他们中。非常感谢@mcpDESIGNS – user3275142 2014-11-04 15:52:18

+0

谢谢@Regent我已经改变了这一点。顺便说一句,应该用什么来代替'onclick'? – user3275142 2014-11-04 15:55:56

0

您不能使用.,因为它会查找其子m10p1

看看下面的代码片断:

$(document).ready(function(){ 
 
    $("input[type='radio']").click(function(){ 
 
     alert($("#"+$(this).val()).length); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="cMB_0292_A07" value="cMB_0292_A07" type="radio">-1 
 
<input name="cMB_0292_A07" value="cMB_0292_A07" type="radio">0 
 
<input name="cMB_0292_A07" value="cMB_0292_A07" type="radio">+1 
 
<div id="cMB_0292_A07" style="display: none">minus1</div> 
 
<div id="cMB_0292_A07" style="display: none">zero</div> 
 
<div id="cMB_0292_A07" style="display: none">plus1</div>