Question

Je travaille sur une liste déroulante de sélection. cette liste ajoute tous les éléments sélectionnés (réalisés par un utilisateur) dans un conteneur < DIV & Gt; sous la forme de champs cachés. Ces sélections ont un lien qui donne à l'utilisateur la possibilité de le supprimer du conteneur de sélection. Chaque fois qu'une nouvelle sélection est faite, le code lie automatiquement une fonction en train de changer la sélection si l'utilisateur clique sur le lien REOMVE, quelque chose comme ceci:

< DIV id = & Quot; selectedCategories & Quot; & Gt;
   Catégorie n ° 1 REMOVE_LINK
   < type d'entrée = & "masqué &"; valeur = " 9524 " nom = " recordIds [] " / > < / DIV & Gt;
< sélectionnez >
   < option > Catégorie n ° 2 < / option >
   < option > Catégorie n ° 3 < / option >
< / select >

Chaque fois qu'une nouvelle sélection est effectuée dans la liste déroulante, tous les éléments précédemment sélectionnés doivent être & "liés à nouveau" & "; avec la fonction delete.Pour une raison quelconque, il est nécessaire de procéder ainsi, car tous les éléments semblent perdre leur liaison précédente lors de l’ajout d’un nouveau.

Cela fonctionne très bien dans Fire Fox et Safari, mais pas du tout pour IE . Même si je reconnecte chaque fois pour chaque élément sélectionné, toutes les liaisons sont perdues et le seul qui fonctionne est le tout dernier élément que j'ai ajouté et lié à la fonction delete.

Ma question est la suivante: existe-t-il une solution de contournement pour cela, ou comment puis-je résoudre ce problème? Malheureusement, IE est le navigateur Internet le plus utilisé: (

Merci

Était-ce utile?

La solution 3

J'ai utilisé la fonction Live sans succès, peut-être que je fais quelque chose de mal. ce qui a fonctionné pour moi a été de délier la fonction avant d'ajouter ou de relier toute autre fonction.
Donc, si je lie une fonction à l'événement click comme ceci.



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

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


Plus tard, lorsque je supprimerai record1, je devrai relier cette méthode à record2. Je le ferai de cette façon pour que cela fonctionne dans IE 7 et 8



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

Dans ce cas, l'identifiant & "Id &"; fait référence à un identifiant unique qui a tous ceux qui ont été sélectionnés, dans cet exemple correspond au nombre 2.

Autres conseils

Êtes-vous sûr d’utiliser la version correcte de jQuery pour utiliser la fonction live? C'est relativement nouveau, vous devez donc vous assurer que vous utilisez la version la plus récente.

Vous pouvez utiliser la fonction live () pour établir une liaison avec chaque instance d'un élément de la page, présent et futur. Cela vous évite d'avoir à vous réassocier.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top