javascript - 使用输入值作为 id 切换问题

标签 javascript jquery toggle

我正在尝试使用 jQuery 的 .toggle() 来显示和隐藏三个 div 之一。 div 具有唯一的 id,并且切换哪个 div 的决定取决于选择了三个单选按钮中的哪一个。这三个单选按钮的值与 div 的 id 相对应。因此,如果有人点击 -1 单选按钮,则应切换 id 为 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>

最佳答案

这实际上是一个由两部分组成的问题

首先,您不应该在 ID 中包含 .

其次,jQuery 看到了这个:$('#ID.CLASS') 它正在 DOM 中搜索 ID:cMB_0292_A07,然后是 m1 的子类。

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

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

<强> jsFiddle DEMO


其他旁注,不要使用 onClick 事件。最好将业务逻辑和表示逻辑分开。使用 jQuery .on('click', function () {}); 事件!

关于javascript - 使用输入值作为 id 切换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739036/

相关文章:

Jquery 中的 Javascript 数组值 [已修复]

css - 手机版问题

html - Chrome 和 Firefox Bootstrap 导航切换不起作用

javascript - 在 Microsoft MVC 2 的可变长度列表中使用自定义验证器(客户端验证问题)

javascript - 如何将一张纸的范围复制到另一张纸的范围,然后重复复制到下一行

Jquery - 使用父高度的垂直居中。有点

javascript - 将垂直轮播(桌面)切换为移动中的水平轮播

jquery - 为什么 jQuery 删除了 .toggle() 方法?

javascript - Mongodb Mongoose 复杂的搜索查询

javascript - WebView - 有什么方法可以编辑加载的网页吗?添加一些脚本或样式?