Pregunta

Estoy trabajando en una lista desplegable de selección. esta lista agrega todos los elementos seleccionados (realizados por un usuario) en un contenedor < DIV & Gt; en forma de campos ocultos. Estas selecciones tienen un enlace que le da al usuario la opción de eliminarlo del contenedor de selección. Cada vez que se realiza una nueva selección, el código vincula automáticamente una función que cambia la eliminación de la selección en caso de que el usuario haga clic en el enlace REOMBAR, algo como esto:

< DIV id = & Quot; selectedCategories & Quot; & Gt;
   Categoría # 1 REMOVE_LINK
   < tipo de entrada = " oculto " valor = " 9524 " nombre = " recordIds [] " / > < / DIV & Gt;
< seleccione >
   < opción > Categoría # 2 < / opción >
   < opción > Categoría # 3 < / opción >
< / seleccione >

Cada vez que se realiza una nueva selección de la lista desplegable, todos los elementos previamente seleccionados deben ser " re-binded " con la función de eliminación. Por alguna razón, es necesario hacer esto, porque todos los elementos parecen perder su enlace anterior cuando se agrega uno nuevo.

Esto funciona muy bien en Fire Fox y Safari, pero no funcionan para IE . A pesar de que vuelvo a vincular cada vez para cada elemento seleccionado, todos los enlaces se pierden y el único que funciona es el último elemento que he agregado y vinculado con la función de eliminación.

Mi pregunta es: ¿hay alguna solución para esto o cómo abordo este problema? Lamentablemente, IE es el navegador de Internet más utilizado :(

Gracias

¿Fue útil?

Solución 3

Utilicé la función Live sin suerte, tal vez estoy haciendo algo mal. lo que funcionó para mí fue desvincular la función antes de agregar o volver a vincular cualquier otra función.
Entonces, si asocio una función al evento click como este.



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

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


Más tarde, cuando elimine record1, necesito volver a vincular este método al record2, lo haré de esta manera para que funcione en IE 7 y 8



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

En este caso, el " Id " se refiere a una identificación única que tiene todo lo que ha sido seleccionado, en este ejemplo corresponde al número 2.

Otros consejos

¿Está seguro de que está utilizando la versión correcta de jQuery para usar la función live? Es relativamente nuevo, por lo que debe asegurarse de estar utilizando la versión más reciente.

Puede usar la función live () para enlazar a cada instancia de un elemento en La página, presente y futuro. Esto le ahorra tener que volver a vincular.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top