日期:2014-05-16  浏览次数:20291 次

jquery 添加A标记添加样式

<style>
.on { background-color:#000;}
</style>

<a href="a.html" onclick="on()">栏目1</a>
<a href="b.html" onclick="on()">栏目2</a>
<a href="c.html" onclick="on()">栏目3</a>




function on(){
$(this).click(function(){
$(this).addClass("on");
})

}






我的想法是  当点击【栏目1】,        给【栏目1】  添加 on 样式,点击【栏目2】移除【栏目1】的on样式,然后给【栏目2】添加 on样式, 


初学者,自己试着写了下貌似不对

大神们给个思路





------解决方案--------------------
var memory = null;
function on(){
    $(this).click(function(){
$(memory).removeClass("on");
memory = this;
        $(this).addClass("on");
    })
     
    }
------解决方案--------------------
你可以一步一步的来,这次就先写,点击一个元素,就给某个元素添加一个class类。

这里的问题:
1:使用a标签就不合适了,a标签点击之后,就会进行跳转,也看不到样式的。
2:你是在on内部又添加了一个click事件,并且是使用的this操作,this的指向问题,你要清楚才能用的好,既然是初学,就先少用这个,只是说少用,也要一点点的去积累这些。
3:刚开始学的话,还是去练习一下给的例子,然后在例子的基础上进行扩展,代码嘛,总归是有些规则的,这些规则还是需要了解的。
------解决方案--------------------
<div id = "id">
<p>栏目1</p>
<p>栏目2</p>
<p>栏目3</p>
<p>栏目4</p>
</div>

<script src = "js/jquery.js"></script>
<script type="text/javascript">
$("#id p").click(function(){
$("#id p").removeClass("on");
//上一行,把虽有的p中清楚 on
$(this).addClass("on");
//对当前的点击的p元素,添加class
});
</script>


还有一个问题,就是,如果使用jQuery就都使用jQuery呗,尽量不要混着用,容易出错,而且看起来也会有些乱。

你的那种写法的this是指向window的,所以是不行的。