我有一个HTML UL标签在那里我有这样的事情:如何动态替换HTML标签,而不会丢失事件
<div id="sidebar">
<ul id="menu">
<li>
<div id="clickable">
<img src="img/img8.png" alt="Descripción de la igen 8.png">/img>
</div>
</li>
<li>
<div id="clickable">
<img src="img/img10.png" alt="Descripción de la imagen 10"></img>
</div>
</li>
</ul>
</div>
这是一种常见的列表,即表现为一个滑块。正如你所看到的,每个图像都在div内,你可以点击并在另一个div中显示它。
好吧,我有这个oter列表:
<div id="seleccion_galeria">Selecciona la sección que te gustaría visualizar:</div>
<div id="lista_galerias">
<ul>
<li><div id="escaparates_show">Escaparates</div>
<script type="text/javascript">
$('#escaparates_show').click(function()
{
console.log('clicked');
$('#menu').html('');
$('<li><div id="clickable"><img src="img/img8.png" alt="Descripción de la imagen 8."></img></div></li><li><div id="clickable"><img src="img/img10.png" alt="Descripción de la imagen 10"></img></div></li><li><div id="clickable"><img src="img/img13.png" alt="Descripción de la imagen 13"></img></div></li><li><div id="clickable"><img src="img/img15.png" alt="Descripción de la imagen 15"></img></div></li><li><div id="clickable"><img src="img/img20.png" alt="Descripción de la imagen 20"></img></div></li>')
.prependTo('#menu');
$('#galeria_seleccionada').html('Escaparates');
});
</script>
</li>
<li><div id="decoracion_show">Decoración</div>
<script type="text/javascript">
$('#decoracion_show').click(function()
{
console.log('clicked');
$('#menu').html('');
$('<li><div id="clickable"><img src="img/img8.png" alt="Descripción de la imagen 8."></img></div></li><li><div id="clickable"><img src="img/img10.png" alt="Descripción de la imagen 10"></img></div></li>')
.prependTo('#menu');
$('#galeria_seleccionada').html('Decoración');
});
</script>
</li>
</ul>
</div>
这是表明,该最后一个列表中的每个元素包含可能的图像列表。当我点击列表中的每个元素时,它将删除第一个“#menu”列表的html,并将其替换为我希望的内容。这样,我可以显示不同的图像列表,可以在另一个div上点击和展开。
问题是,当我将新内容替换为新列表时,它完美地显示了新的图像列表,但它不会继承“可点击的”事件,因此我第一次用HTML标签,它失去了它的可点击。
任何人都可以知道为什么会发生这种情况?
谢谢!
编辑:
对于同样的问题,我有这样的jQuery的事件:
$('#menu').on("hover", '#menu li',
function() {
//mouse over LI and look for A element for transition
$(this).find('img')
.animate({ opacity:1 }, 200)
});
它适用于所有在继承的元素,但我不能让“鼠标离开”事件继承。如果我添加:
$('#menu').on("hover", '#menu li',
function() {
//mouse over LI and look for A element for transition
$(this).find('img')
.animate({ opacity:1 }, 200)
},
function() {
$(this).find('img')
.animate({ opacity:0.5 }, 200)
});
它不起作用。它如何为悬停onleave事件?
'live'已被弃用。使用'on',如果你被困在一个老版本的jQuery中,使用'del egate'。 –
我使用$('body')。委托方法,它工作完美!谢谢! – Sonhja
'悬停'方法怎么样?我不能让它继承onmouseenter和onmouseleave。我只能把事件放在鼠标上。如果我尝试添加onmouseleave,它不起作用!有关更多解释,请参阅编辑... – Sonhja