<ul>
<li class="red"><a href="javascript:void(0)">项目一</a></li>
<li class="green"><a href="javascript:void(0)">项目二</a></li>
<li class="green"><a href="javascript:void(0)">项目三</a></li>
<li class="green"><a href="javascript:void(0)">项目四</a></li>
</ul> $(function () {
$.each($("li"), function (i, o) {
$(this).children("a").click(function () {
allhide();
$(this).parent("li").attr("class", "red");
});
if ($(this).attr("class") != "red") {
$(this).mouseenter(function () {
$(this).attr("class", "red");
});
$(this).mouseleave(function () {
$(this).attr("class", "green");
});
}
});
});
function allhide() {
$.each($("li"), function (i, o) {
$(this).attr("class", "green");
});
}
<style type="text/css">
li
{
width: 80px;
list-style-type: none;
}
.red
{
background-color: Red;
}
.green
{
background-color: Green;
}
</style>冒泡 click mouseout
<li class="red"><a href="javascript:void(0)">项目一</a></li>
<li class="green"><a href="javascript:void(0)">项目二</a></li>
<li class="green"><a href="javascript:void(0)">项目三</a></li>
<li class="green"><a href="javascript:void(0)">项目四</a></li>
</ul> $(function () {
$.each($("li"), function (i, o) {
$(this).children("a").click(function () {
allhide();
$(this).parent("li").attr("class", "red");
});
if ($(this).attr("class") != "red") {
$(this).mouseenter(function () {
$(this).attr("class", "red");
});
$(this).mouseleave(function () {
$(this).attr("class", "green");
});
}
});
});
function allhide() {
$.each($("li"), function (i, o) {
$(this).attr("class", "green");
});
}
<style type="text/css">
li
{
width: 80px;
list-style-type: none;
}
.red
{
background-color: Red;
}
.green
{
background-color: Green;
}
</style>冒泡 click mouseout
解决方案 »
- 怎样让<select></select>的文本框可输入,是他的那个属性
- 跪求一个简单的js代码 在线等 急急急!!!
- 关于javascript的简单问题
- jquery如何取消onfocus事件
- 滚动条问题
- JS在屏幕上画点、线、矩形、多边形如何实现?
- cookie操作
- 请问用ActiveX控件,怎么判断客户端是否安装了必须安装的程序,既到注册表中怎么找安装了客户端软件的信息
- 哪有精减的日历控件下载,或代码贴上,梅花雨你的控件有没有精减版的,现在的太慢了呵,大家帮我,在线等...
- 怎麼動態的改變 span 的顏色???
- html 函數問題
- 求教uploadify3.1的formdata传值给服务器问题
$(this).children("a").click(function (e) {
$("li").attr("class", "green");//不用另起函数
$(this).parent("li").attr("class", "red");
e.stopPropagation();
});
if ($(this).attr("class") != "red") {
$(this).mouseenter(function (e) {
$(this).attr("class", "red");
e.stopPropagation();
});
$(this).mouseleave(function (e) {
$(this).attr("class", "green");
e.stopPropagation();
});
}
});
//这里不存在冒泡呀
$(function () {
$("li").each(function(){
$(this).find("a").click(function(){
$("li").attr("class","green");
$(this).parent().attr("class","red");
})
});
});
</script>
allhide();
$(this).parent("li").attr("class", "red");
});
感觉是代码的问题,你的$(this)指针变过了下面还能用吗?
你用变量记录一下var that = $(this)试试
if ($(this).attr("class") != "red") {
$(this).mouseenter(function () {
$(this).attr("class", "red");
});
$(this).mouseleave(function () {
$(this).attr("class", "green");
});
}
});
哦我搞错了,我对作用域理解有问题,不过我知道你问题在哪了,你点击后没有鼠标移入,你在mouseenter和mouseleave里放console.log()就知道了,逻辑错误
鼠标的点击是在鼠标移入之后,也就是你没有捕捉到鼠标移入。你现在的逻辑是页面加载完成后没有'red'类的元素绑定了hover事件,也就是你给除了第一个元素外的元素绑定了事件。其实一般都是把逻辑处理放到事件里的,而你的if ($(this).attr("class") != "red") {//event handle}这种方式不可取
nodeli = $("ul li:first");
$.each($("li"), function (i, o) {
$(this).click(function () {
allhide();
$(this).attr("class", "red");
nodeli = $(this);
//alert(nodeli.html());
});
$(this).mouseover(function () {
$(this).attr("class", "red");
});
$(this).mouseout(function () {
$(this).attr("class", "green");
$(nodeli).attr("class", "red");
// alert(nodeli.html());
});
});