我有一個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