<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> $.each($("li"), function (i, o) {
$(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();
});
}
});好像不起作用,还是鼠标点击时改变这个li的样式,但是鼠标移开时就去掉了这个样式了,不知道是什么原因
<script type="text/javascript">
//这里不存在冒泡呀
$(function () {
$("li").each(function(){
$(this).find("a").click(function(){
$("li").attr("class","green");
$(this).parent().attr("class","red");
})
});
});
</script>哦,不是冒泡吗??那我这里的点击后移开鼠标样式就改变了啊
$(this).children("a").click(function () {
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");
});
}
});恩,我自己也搞明白了,鼠标点击事件时,颜色为红色的样式已经变化了,而我没有把变化的指针保存下来,以下是我修改后的代码:
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());
});
});以上就是jquery阻止click与mouseover以及mouseout冒泡问题解决的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号