2009-08-03 103 views
1

我有一个div在鼠标上方弹出,我使用html()插入一些内容。而且我想让代码的一部分保持不动,如何删除仅在jquery中使用append()追加的标签

<div id="pop_div" ><span>X</span></div> 


$("#team_div > ul img").bind('mouseenter',function(){ 
    $("#pop_div").html('<img src="' + img + '"/>' + content); 
}); 

和onclick我隐藏分区。

$('#pop_div span').click(function(){ 
    $("#pop_div").hide(); 
}); 

我的问题是,我不能使用下面的代码因为jQuery不会为标签

$("#pop_div").html('<span>X</span><img src="' + img + '"/>' + content); 

分配的任何事情(我不能使用的liveQuery插件)

我很欣赏你的意见。

回答

1

您正在替换#pop_div的全部内容,当您插入HTML代码时,正在创建新的DOM元素,这就是事件未绑定的原因。

span元素已从DOM中删除,并且附加到它的事件不再有效。

我觉得你不需要替换该div的所有内容,你可以组织你的DIV像这样:

<div id="pop_div" > 
    <span>X</span> 
    <img/> 
    <div id="content"></div> 
</div> 

在你的mouseenter:

$('#team_div > ul img').bind('mouseenter',function(){ 
    $('#pop_div img').attr('src', img); // set the image source 
    $('#pop_div #content').html(content); // display the content 
}); 

的图像源改变,并将content变量插入到'#content' div中。

由于span元素不受影响,您的点击处理程序将保持现在的样子。

+0

谢谢你,它的工作。 – vinay 2009-08-03 06:00:53

1

CMS是正确的。另外从jQuery 1.3开始,你可以绑定事件with the live function,它将事件绑定到当前和将来的所有元素。

$('#team_div > ul img').live('mouseenter',function(){ 
    $('#pop_div img').attr('src', img); // set the image source 
    $('#pop_div #content').html(content); // display the content 
});