我有这个:
jQuery(document).ready(function(){
jQuery('a.color2030').click( function() {
jQuery('tbody').hide();
jQuery('tbody.color2030').show();
});
jQuery('a.color2031').click( function() {
jQuery('tbody').hide();
jQuery('tbody.color2031').show();
});
...
...
jQuery('a.color2037').click( function() {
jQuery('tbody').hide();
jQuery('tbody.color2032').show();
});
});
但是不想为每个链接重复代码块。 我可以通过任何方式从链接中获取id。它可能是color2030等。
我试过了:
<a href="#color2030" class="color2030" id="test2030">
<a href="#color2031" class="color2031" id="test2031">
<a href="#color2032" class="color2032" id="test2032">
在jQuery中:
jQuery('a').click(function() {
// this works
var id = 'test';
alert(id); // will alert 'test'
// this does not work
var id = $(this).attr('id'); //update2: should have been jQuery(this...
alert(id); // no alert but error on page
});
但我似乎无法抓住身份证。 “var id”行似乎有错误。 有没有其他方法可以在按下时从a-tag读取id / class或其他标签?
BR。安德斯
更新: 由于一个错字,两个人发现不超过30 sek!
UPDATE2并解决了! 我无法发现的错误是$(this)它应该是'var id'行中的jQuery(this)
使用解决方案进行最终更新 这是诀窍
jQuery(document).ready(function(){
jQuery('a').click( function() {
var id = this.id;
alert(id);
jQuery('tbody').hide();
jQuery('tbody.'+id).show();
});
});
答案 0 :(得分:4)
onclick
应为click
:
jQuery('a').click(function() {
var id = $(this).attr('id');
alert(id);
});
答案 1 :(得分:2)
有一些错误。这是重构和工作的代码:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('a').click(function() {
alert(this.id);
});
});
</script>
</head>
<body>
<a href="#color2030" class="color2030" id="test2030">test2030</a>
<a href="#color2031" class="color2031" id="test2031">test2031</a>
<a href="#color2032" class="color2032" id="test2032">test2032</a>
</body>
</html>
希望这有帮助。
答案 2 :(得分:1)
您的活动中有拼写错误:
jQuery('a').click(function() {
var id = $(this).attr('id');
alert(id);
});
最好使用Firebug或Web Developer进行此类调试。话虽如此,如果此事件正确解雇,您将收到空白警报......
答案 3 :(得分:1)
您的代码中的错误是您绑定到“onclick”,而不是“点击”。
答案 4 :(得分:0)
你有基本正确的做法 - 不要忘记将你的脚本包装在$(document).ready(..)
中,否则你的脚本会在所有元素加载之前尝试绑定它的事件处理程序。如上所述,您还使用了onclick而不是click
。您也可以直接引用this
。
<script type="text/javascript">
$(document).ready(function() {
$('a').click(function() {
var id = this.id;
alert(id);
});
});
</script>
答案 5 :(得分:0)
从查看你要做的事情......你无法隐藏tbody
然后取消隐藏它的一部分。尝试做这样的事情:
HTML
<a href="#color2030" class="color">2030</a>
<a href="#color2031" class="color">2031</a>
<a href="#color2032" class="color">2032</a>
<a href="#color2033" class="color">2033</a>
<a href="#color2034" class="color">2034</a>
<a href="#color2035" class="color">2035</a>
<a href="#color2036" class="color">2036</a>
<a href="#color2037" class="color">2037</a>
<a href="#color2038" class="color">2038</a>
<table>
<tbody>
<tr>
<td id="color2030">2030</td>
<td id="color2031">2031</td>
<td id="color2032">2032</td>
</tr>
<tr>
<td id="color2033">2033</td>
<td id="color2034">2034</td>
<td id="color2035">2035</td>
</tr>
<tr>
<td id="color2036">2036</td>
<td id="color2037">2037</td>
<td id="color2038">2038</td>
</tr>
</tbody>
</table>
脚本
$(document).ready(function(){
$('table tbody td').hide();
$('a.color').click(function(){
var selColor = $(this).attr('href');
$('table tbody td').hide();
$('td'+selColor).show();
})
})