js控制标签class的问题
<html>
<head>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery
/jquery-1.4.min.js"></script>
<script>
$(document).ready(function(){
$(".click").click(function(){
alert($(this).attr("class"));
$(this).attr("class","noclick");
});
$(".noclick").click(function(){
alert($(this).attr("调用了noclick"));
});
});
</script>
</head>
<body>
<div class="click">click我</div>
</body>
</html>
上面的代码中,click点击后class变为noclick了,为什么再点击时无法调用noclick的函数?
答案:当class发生改变时,无法调用noclick的函数,是因为要根据这种情况使用 .live()方法。
$(".noclick").live("click",function(){
alert("调用了noclick事件");
});
-------------------------------------------------------------------
以上就可以在class改变为noclick的时候,进行相应的click事件的调用了。
这样修改后,点击这个div的时候,会先调用click的单击事件,然后马上就会调用noclick的单击事件。
这个时候,又会产生一个问题:就是 .live()方法是绑定到DOM树的根节点上的,因此会有冒泡传递的问题。
所以修改代码为以下这样:
$(document).ready(function(){
$(".noclick").live("click",function(event){
alert("调用了noclick的单击事件!");
});
$(".click").click(function(event){
alert($(this).attr("class"));
$(this).attr("class","noclick");
$(this).unbind("click");
return false;
});
});
到这里,应该解决你的问题了。
其他:估计是浏览器对jquery支持的不太好。用原始的javascript设置吧 你们都喜欢用jquery框架吗?我不会用,我自己也是做JS的,我都是纯手工打造的啊!你只是那样的调用,有低地方它做不到怎么办呢,你会改源码?自己也可以把自己写的代码封装下就行了吧!
干嘛要用jq呢
上一个:PHP留言本利用AJAX和JS如何上传头像保存到数据库中并在前台进行更新显示!像百度空间里可以自动编辑头像!
下一个:asp.net js出现的问题