假设我有以下两个JQuery函数 -
第一个有效:
$("#myLink_931").click(function ()
{
$(".931").toggle();
});
和第二个,它不起作用:
$("#myLink_931").click(function ()
{
var class_name = $(this).attr("id").split('_')[1];
$("."+class_name).toggle();
});
我想用第二个替换第一个,这是更通用的,但是找不到任何明显的语法问题,第二个可能阻止它工作。
我的猜测是语法有问题:
"."+class_name
这是错误的语法吗?
答案 0 :(得分:3)
这是调试器的用途。单步执行代码并确保按预期计算class_name。调试器应该让你查看“。”+ class_name的结果。
答案 1 :(得分:3)
我创建了一个示例页面并删除了您的示例代码,并且它按预期工作。也许页面上还有另一个问题?你可以发布到实际网站的链接吗?
以下是我使用的代码:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script src="scripts/script.js" type="text/javascript"></script>
</head>
<body>
<div id="myLink_931">Click Me</div>
<div class="931">HI</div>
</body>
</html>
和脚本文件:
(function($) {
$(document).ready(function() {
$("#myLink_931").click(function() {
var class_name = $(this).attr("id").split('_')[1];
$("." + class_name).toggle();
});
});
})(jQuery);
答案 2 :(得分:3)
他们也一样。
<强> Working Demo 强>
答案 3 :(得分:1)
不允许类名和ID以数字开头 - 但不解释为什么一个有效,另一个则不然。如上所述,请提供更多信息。
答案 4 :(得分:1)
你是否有可能没有在准备语法中包装你的第二个例子[即$(function(){ })
]这意味着尚未在DOM中创建元素吗?