Domanda

Sto lavorando a un elenco a discesa di selezione. questo elenco aggiunge tutti gli elementi selezionati (eseguiti da un utente) in un contenitore < DIV & Gt; sotto forma di campi nascosti. Queste selezioni hanno un collegamento che offre all'utente la possibilità di rimuoverlo dal contenitore di selezione. Ogni volta che viene effettuata una nuova selezione, il codice associa automaticamente una funzione che sta cambiando la rimozione della selezione nel caso in cui l'utente faccia clic sul collegamento REOMVE, in questo modo:

lt &; DIV id = & Quot; selectedCategories & Quot; & Gt;
   Categoria n. 1 REMOVE_LINK
   lt &; input type = " nascosto " value = quot &; & 9524 quot; & Name = quot; & RecordIds [] quot; / Gt &; lt &; / DIV gt &;
lt &; selezionare gt &;
   lt &; opzione > Categoria # 2 < / Opzione gt &;
   lt &; opzione > Categoria # 3 < / Opzione gt &;
lt &; / seleziona >

Ogni volta che viene effettuata una nuova selezione dall'elenco a discesa, tutti gli elementi precedentemente selezionati devono essere " ri-associato " con la funzione di eliminazione. Per qualche motivo è necessario farlo, perché tutti gli elementi sembrano perdere il loro legame precedente quando ne viene aggiunto uno nuovo.

Funziona molto bene in Fire Fox e Safari, ma non funzionano affatto per IE . anche se rilevo nuovamente ogni volta per ogni elemento selezionato, tutti i collegamenti vengono persi e l'unico che funziona è l'ultimo elemento che ho aggiunto e associato con la funzione di eliminazione.

La mia domanda è: esiste una soluzione per questo, o come posso risolvere questo problema? Sfortunatamente, IE è il browser Internet più utilizzato là fuori :(

Grazie

È stato utile?

Soluzione 3

Ho usato la funzione Live senza fortuna, forse sto facendo qualcosa di sbagliato. ciò che ha funzionato per me è stato annullare la funzione prima di aggiungere o ripetere qualsiasi altra funzione.
Quindi, se associo una funzione all'evento click in questo modo.


 $('#deleteRecord1').bind('click',function() 
   { 
        // function here ...
   }
 );

$('#deleteRecord2').bind('click',function() { // function here ... } );


Più tardi, quando elimino record1, devo ricollegare questo metodo a record2, lo farò in questo modo per farlo funzionare in IE 7 e 8


 $('#deleteRecordId').unbind('click');
 $('#deleteRecordId').bind('click',function() 
   { 
        // function here ...
   }
 );

In questo caso " Id " fa riferimento a un ID univoco che ogni elemento selezionato ha, in questo esempio corrisponde al numero 2.

Altri suggerimenti

Sei sicuro di utilizzare la versione corretta di jQuery per utilizzare la funzione live? È relativamente nuovo, quindi è necessario assicurarsi di utilizzare la versione più recente.

Puoi utilizzare la live () per associare ogni istanza di un elemento su la pagina, presente e futura. Questo ti evita di doverti ricollegare.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top