Portál AbcLinuxu, 12. května 2025 05:05

Dotaz: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu

8.11.2013 07:23 webar
jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
Přečteno: 595×
Odpovědět | Admin
Dobry den panove, pokud tento dotaz bude mimo, tak at jej admini zamknou.

Vytvarim webove stranky, do kterych pridavam dynamicky element option. Na dynamicky pridany option se vaze event click s nejakou operaci. Ve vsech prohlizecich funguje pouziti event handleru "on", ale IEcka to ignoruji. Kod nize kod a ukazka na jsbin
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.11.2013 08:08 Loyza
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nenavazuj pomocí on, ale pomocí delegate. Kromě toho, že by to v těchto případech mělo fungovat je to také mnohem rychlejší: http://api.jquery.com/delegate/
8.11.2013 08:52 webar
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
Tak bohuzel ani delegate nejde. Opet v chrome, firefox, opera jede ale IE nee.
8.11.2013 08:58 DarkKnight | skóre: 26
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
problem bude s vice id, ty by mely byt unikatni, zkus to pres class
8.11.2013 09:39 webar
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
Dekuji za reakci. To sem zkousel. Zkousel sem i bind, ale ten se chova tak ze pak v $(this).text() je body - jako cely kod a to ve vsech browserech. Damy prominou, panove pochopi, zasra.y IEcka.
8.11.2013 10:11 DarkKnight | skóre: 26
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
no muze tam byt taky problem s tim, ze dom je uz vykresleny a bind tedy neprobehne tak jak ma

reseni muze byt odbindovat to a nabindovat znovu pri kazdem kliknuti, nebo pouzit onclick primo do elementu
8.11.2013 11:47 webar
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu

Tak jsem zkusil a bohuzel. Ani onclick do elementu option nepomohlo.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="jquery-1.10.2.min.js"></script>
<title>ie test jquery</title>
</head>
<body>
<script type="text/javascript">
var n=0;
$(function() {
$("#clickMe").click(function(){
$("#slct").append("<option onclick='alert(this.value)'>Item "+n+"</option>");
n++;
});
});
</script>
<div id="clickMe">Clickni me</div>
<select id="slct" style="width: 150px;" size='3'>

</select>
</body>
</html>

Chova se to porad stejne vsechny browsery delaji co maji jen IE zase nic. Zacinam z toho byt nestastny.

Tarmaq avatar 8.11.2013 12:10 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
zkus tohle:
   var n=0; 
   $(document).ready(function() { 
     $('body')
     .on('click', "#clickMe", function()
     { 
       $("#slct").append('<option>Item '+n+'</option>'); 
       n++; 
     })
     .on('click', '#slct', function()
     {  
        alert($(this).find(':selected').text());
     })
     ; 
sice to asi nebude fungovat tak jak si prejes, pokud se shiftem vyberes vice polozek, ale treba to bude stacit.. Jak se zda, tak option v IE nevyhazuje click event..
Don't panic!
Tarmaq avatar 8.11.2013 12:20 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
hm ted koukam, ze stejne ten tvuj select neni multiple, takze asi v pohode.. ale kdyby nahodou jsi chtel mit moznost oznacit vice moznosti, muzes to udelat takhle (inspirovano zde:
   var n=0; 
   var options = [];
   var lastOption;
   $(document).ready(function() { 
     $('body')
     .on('click', "#clickMe", function()
     { 
       $("#slct").append('<option>Item '+n+'</option>'); 
       n++; 
     })
     .on('click', '#slct', function()
     {  
        var selected = $(this).find(':selected');
        lastOption = selected.not(options);
        options = selected;
        alert(lastOption.text());
     })
     ; 
   }); 
Ale tady je zas problem, kdyz je vybrano vice polozek a pak odznacis jednu..
Don't panic!
8.11.2013 13:05 webar
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu

Jezismarjaaa dekuji toto opravdu dela to co jsem potreboval:

cely kod:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="jquery-1.10.2.min.js"></script>
<title>ie test jquery</title>
</head>
<body>
<script type="text/javascript">
var n=0;  
$(function() {  
$("#clickMe").click(function() {  
$("#slct").append('<option>Item '+n+'</option>');  
n++;  
});
$('body').on('click', '#slct', function() {   
alert($(this).find(':selected').text());
});
});  
</script>
<div id="clickMe">Clickni me</div>
<select id="slct" style="width: 150px;" size='3'>
</select>
</body>
</html>

Tarmaq avatar 8.11.2013 11:53 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
delegate a on jsou uplne ty same veci, jen s jinym poradim parametru.. uryvek z kodu jquery:
	delegate: function( selector, types, data, fn ) {
		return this.on( types, selector, data, fn );
	},
samozrejme je rozdil zda je on volan:
$('body').on('click', '#mujElement', function()
{
  // funkce je delegovana
})

$('#mujElement').on('click', function()
{
  // funkce je bindovana
})
Don't panic!
Tarmaq avatar 8.11.2013 11:54 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
s/zda/jak/
Don't panic!
8.11.2013 13:09 webar
Rozbalit Rozbalit vše Re: jquery - Internet Explorer ignoruje event on na dynamicky pridanem elementu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste jednou velky dik Tarmaqovi.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.