<html>
<head>
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("#ul1 li").css("cursor", "pointer")
.mouseover(function () {
$(this).css("background", "red").siblings().css("background", "white");
})
.click(function () {
$(this ).css("background", "white").appendTo("#ul2");
});
});
</script>
</head>
<body>
<ul id="ul1" style="float:left;width:30%;">
<li>aaaa</li>
<li>bbbb</li>
<li>cccc</li>
<li>dddd</li>
<li>eeee</li>
</ul>
<ul id="ul2" style="float:left;width:30%;">
</ul>
</body>
</html>
右边的ID为ul2的列表,为什么也会触发本属于左边列表的mouseover和click事件.
图片上右边的列表也变红了..难道appendTo()会把事件也加过去??
jquery 中appendTo()函数的疑惑?
答案:4 悬赏:70 手机版
解决时间 2021-01-27 08:17
- 提问者网友:棒棒糖
- 2021-01-26 19:15
最佳答案
- 五星知识达人网友:掌灯师
- 2021-01-26 20:03
原有元素通过appendTo之后会把文本、属性、事件等都复制过去。
所以要想避免这个问题需要使用.clone(false);
原来的代码修改为$(this ).css("background", "white").clone(false).appendTo("#ul2");
就可以防止这个问题。
我已经测试过没有问题了。采纳吧,顺便多给些分数。
所以要想避免这个问题需要使用.clone(false);
原来的代码修改为$(this ).css("background", "white").clone(false).appendTo("#ul2");
就可以防止这个问题。
我已经测试过没有问题了。采纳吧,顺便多给些分数。
全部回答
- 1楼网友:怙棘
- 2021-01-26 22:38
对的,因为你appendTo的是li,所以li所带的事件照样起作用。
- 2楼网友:梦中风几里
- 2021-01-26 21:58
可以这样理解
只要你是连续的调用方法
就会没有先后
你先click 在 onmouseover 也一样的
个人感觉 jquery 会把你的事件一次性执行
而不是分两步走
应为如用变量接受那个this 然后比较变量的差别发现是恒等的
- 3楼网友:轻雾山林
- 2021-01-26 20:24
appendto会将元素从当前位置移除,移动到指定元素后面去,append则不会。
appendchild是为指定元素添加子元素。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯