我有点困惑为什么这不起作用;我假设因为我正在添加这个类而没有将它添加回集合中我不确定。
这里是jsbin http://jsbin.com/ayije,虽然代码也在下面。
无论哪种方式,我都只能对元素进行一次动作。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
$('.optional').click(function () {
$(this).removeClass('optional').addClass('selected');
return false;
});
$('.selected').click(function () {
$(this).removeClass('selected').addClass('rejected');
return false;
});
$('.rejected').click(function () {
$(this).removeClass('rejected').addClass('optional');
return false;
});
});
</script>
</head>
<body>
<style>
a {padding:2px;color:white;}
.optional {background-color:blue;}
.selected {background-color:green;}
.rejected {background-color:red;}
</style>
<div id="tagContainer">
<a href="#" class="rejected">a</a>
<a href="#" class="optional"">b</a>
<a href="#" class="selected">c</a>
</div>
</body>
</html>
答案 0 :(得分:4)
不确定您是否已经知道这一点....查看.live()功能的jquery文档。这样,你可以做这样的事情。
$('.optional').live('click', function () {
$(this).removeClass('optional').addClass('selected');
return false;
});
然后您不必担心文档加载时不存在的类。随着类在元素上发生变化,它们将自动绑定到。
答案 1 :(得分:3)
这是因为点击处理程序仅适用于那些在文档加载时匹配的元素。您应该使用单独的类来标识所有链接,然后设置单击处理程序,该处理程序查看链接所具有的类,然后执行相应的类转换。
$(document).ready(function () {
$('.clickable').click(function () {
var $this = $(this);
if ($this.hasClass('optional')) {
$this.removeClass('optional').addClass('selected');
}
else if ($this.hasClass('selected')) {
$this.removeClass('selected').addClass('rejected');
}
else if ($this.hasClass('rejected')) {
$this.removeClass('rejected').addClass('optional');
}
return false;
});
});
<div id="tagContainer">
<a href="#" class="clickable rejected">a</a>
<a href="#" class="clickable optional">b</a>
<a href="#" class="clickable selected">c</a>
</div>
答案 2 :(得分:2)
您可以像这样更改代码
$(document).on("click", ".clickable", function(){
var $this = $(this);
if ($this.hasClass('optional')) {
$this.removeClass('optional').addClass('selected');
}
else if ($this.hasClass('selected')) {
$this.removeClass('selected').addClass('rejected');
}
else if ($this.hasClass('rejected')) {
$this.removeClass('rejected').addClass('optional');
}
return false;
});
答案 3 :(得分:0)
您还可以将点击处理程序更改为实时点击处理程序:
$(document).ready(function () {
$('.optional').live('click',function () {
$(this).removeClass('optional').addClass('selected'); return false;
});
$('.selected').live('click',function () {
$(this).removeClass('selected').addClass('rejected'); return false;
});
$('.rejected').live('click',function () {
$(this).removeClass('rejected').addClass('optional');
});
});