jquery 通过html方法增加对象后hover失效怎办?

<!doctypehtml><html><head><metacharset="utf-8"><title>无标题文档</title></head><body><inpu... <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<input id="button" type="button" value="button">
<div id="msg">
<ul>
<li class="list" onClick="test('a')" style="background:#0F3">a</li>
<li class="list" onClick="test('b')" style="background:#0Ff">b</li>
</ul>
<ul>
<li class="list" onClick="test('e')" style="background:#0F3">e</li>
<li class="list" onClick="test('f')" style="background:#0Ff">f</li>
</ul>
</div>
</body>
</html>
<script type="text/javascript" src="java.inc.bag/jquery-1.9.1.js"></script>
<script type="text/javascript">
document.getElementById("button").onclick = function(){
var inner = "<ul><li class=\"list\" onClick="\test('e')\" style=\"background:#0F3\">e</li><li class=\"list\" onClick=\"test('f')\" style=\"background:#0Ff\">f</li></ul>
";

$("#msg").html($("#msg").html()+inner);

}

function test(sign){alert(sign);}

$(".list").hover(function(){
$(this).css("background","#F00");
},function(){
$(this).css("background","#0F3");
});
</script>

jquery的hover事件监听所有的list类对象,开始运行点击弹出提示鼠标经过监听是正常的,然后点击button,通过html()函数向页面内加入一组新的ul标签。加入元素成功,点击时弹出提示正常,但是hover失效,不仅是新添加的两个无效,而是所有的包括之前能正常相应的4个也都没有反应了。请问这个该怎么解决?
更正一下,刚才又试了一下
不用$("#msg").html($("#msg").html()+inner);这个写法

而是用$("#msg").append($(inner);这样可以保证原来的li正常响应监听事件。但是新加入的依旧不能响应hover。求解
展开
 我来答
百度网友1f463fa
推荐于2017-11-29 · TA获得超过685个赞
知道小有建树答主
回答量:600
采纳率:0%
帮助的人:471万
展开全部
1.$("#msg").html($("#msg").html()+inner);
其实不是失效了,而是dom树改变了,#msg 里面的内容改变,就不是原来的 .list 了

2.$("#msg").append($(inner);
新加入的 $(inner) ,不在原本的 $('.list') 集合里,因此新加入的没有被绑定事件

我这给出两种做法:
① 在 #msg 内容改变后,给新加入 .list 绑定一次 hover;
② 将事件绑在 $(document) 上,例:
$(document).on('mouseover','.list',function(){
//...
});
不过方法②貌似没有hover写法。

仅供参考~
追问
嗯,这个跟我理解的差不多,(以前是学java的...下意识感觉是有个类似监听列表的东西需要更新)呵呵
请问第一种解决方案,具体该怎么写?
追答
$("#msg").append($(inner));后面加一次绑定

$(inner).hover(...)
learneroner
高粉答主

2014-08-22 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6465万
展开全部
<script type="text/javascript">
$(function(){
$("#button").click(function(event) {
var inner = "<ul><li class=\"list\" onClick=\"test('e')\" style=\"background:#0F3\">e</li><li class=\"list\" onClick=\"test('f')\" style=\"background:#0Ff\">f</li></ul>";
$("#msg").append(inner);
});
$("#msg").on('mouseover', ".list", function(event) {
$(this).css("background","#F00");
}).on('mouseout', ".list", function(event) {
$(this).css("background","#0F3");
});
})
function test(sign){alert(sign);}
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
2014-08-22 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<script type="text/javascript" src="jquery-1.9.0.min.js">

</script>
<script type="text/javascript">
jQuery(function($) {
    $("#button").click(function() 
    {
        var inner = '<ul><li class="list" onClick="test(\'e\')" style="background:#0F3">e</li><li class="list" onClick="test(\'f\')" style=\"background:#0Ff\">f</li></ul>';
        $("div#msg").html($("div#msg").html() + inner);
    });
    
    $('div#msg').delegate("li.list", "mouseover mouseout", function(e) {
     if (e.type == 'mouseover')
        {
     $(this).css("background", "#F00");
        } 
     else if (e.type == 'mouseout')
     {
         $(this).css("background", "#0F3");
}
    });
});
</script>
</head>
<body>
<input id="button" type="button" value="button">
<div id="msg">
<ul>
<li class="list"  style="background: #0F3">a</li>
<li class="list"  style="background: #0Ff">b</li>
</ul>
<ul>
<li class="list" style="background: #0F3">e</li>
<li class="list"  style="background: #0Ff">f</li>
</ul>
</div>
</body>
</html>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappk8aqef73lw1fz
2014-08-22 · TA获得超过153个赞
知道小有建树答主
回答量:239
采纳率:0%
帮助的人:66.1万
展开全部
你加在最后试试,按理说是js顺序的问题。
你把hover事件单独拎出来,放到js文件的最后或者html的最后
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式