2012-06-28 23 views
7

Sto utilizzando .on() per allegare eventi di clic a più elementi visualizzati nella pagina in modo dinamico. Il problema che ho è che quando aggiungo .on a un contenitore nella pagina e voglio associare eventi di clic a più elementi nel contenitore, quest'ultimo sovrascrive il precedente.jquery. Sull'elemento contenitore collegato a più selettori

<div id="container"> 
    <!-- elements here appear dynamically --> 
    <div id="id1"></div> 
    <div id="id1"></div> 
</div> 

<script> 
    $('#container').on("click", "#id1", function(){}); 
    $('#container').on("click", "#id2", function(){}); 
</script> 

Nell'esempio precedente solo l'evento click per id2 funziona.

C'è un modo per aggirare questo?

Grazie, Ev.

+0

strano avete 'id1' e non funziona e non dovete' id2' a dom ma funziona – Jashwant

+0

Nei tuoi commenti che hai menzionato che è un errore di battitura, dovresti modificare la tua domanda – Jashwant

risposta

13

Demohttp://jsfiddle.net/aRBY4/2/piccolo miglioramento quihttp://jsfiddle.net/aRBY4/5/

Sì vostra id è sbagliato. :)

Si sta usando lo stesso identificativo, cioè id1 per entrambi gli elementi.

Spero che questo aiuti,

codice

po 'migliorata codice

$('#container').on("click", "#id1, #id2", function() { 
    alert($(this).prop('id')) // you can use --> attr('id') 
});​ 

o

$('#container').on("click", "#id1, #id2", function() { 
     alert($(this).attr('id')) 
    });​ 

o

$('#container').on("click", "#id1", function(){alert('d1')}); 
    $('#container').on("click", "#id2", function(){alert('d2')});​ 
+0

solo un piccolo suggerimento, 'id' non è una proprietà. Dovrebbe essere '$ (this) .attr ('id')' – Jashwant

+1

@Jashwant ':)' done ** Ma ** leggi questo bruv - lettura interessante - http://stackoverflow.com/questions/5874652/prop- vs-attr ':))' –

+0

ha ha ... Mi sento in difficoltà ora (sono stupido). Non lo sapevo mai. I documenti jQuery non lo menzionano. Stavo pensando che hanno introdotto "prop" solo per la semantica. Molte grazie per il link. – Jashwant

2

Demo https://jsfiddle.net/amol9supe/w18ktftb/3/

<div id="container"> 
    //Elements here appear dynamically 
    <div id="id1" class="common-id">hulk</div> 
    <div id="id2" class="common-id">rambo</div> 
</div> 

<!-- Script Here --> 
$('#container').on("click", ".common-id", function() { 
    alert(this.id) 
}); 
+0

Mille grazie. :) –

+0

grazie a @BimalDas –