J'essaie de modifier l'événement "ONCHANGE" d'un élément existant "SELECT" "
Par exemple, j'ai le code suivant: P>
$("#sel_id").removeAttr("onchange").bind("change", function(){ foo_2(); });
4 Réponses :
Pas une réponse exacte à la question, mais je supprimerais probablement l'événement en utilisant ceci: (comme on le voit à Comment effacer / supprimer JavaScript Manutention" ) P> et ensuite aller avec ceci: p> $('#sel_id').change(function() { foo_2(); });
Oui, c'est la bonne réponse, je dois bien supprime l'événement et lier ma propre utilisation de jQuery.
$ ('sel_id'). Attrib (onechanange ', non défini) .changer (fonction () {foo_2 ();}); code> est la façon JQUERY. De cette façon, vous pouvez simplement faire les deux opérations avec un objet JQuery.
Aussi op pourrait probablement juste faire .Change (foo_2) code> au lieu d'emballage dans une fonction anonyme.
@Muhd votre code ne fonctionnait pas mais quand j'ai changé le non défini pour NULL, cela a commencé à travailler.
fonctionne pour moi si j'utilise l'indigène Aussi, rappelez-vous que vous avez besoin de citations autour du sélecteur. P> setattribute () code>.
$("#sel_id")[0].setAttribute("onchange", "foo_2()");
Vous avez raison, j'ai oublié les citations de l'exemple mais ont été utilisées en vrai code. (modifié la question) setattribute () code> devrait être la solution pour la question, mais elle a en fait le même problème que j'ai présenté. Si un attribut 'Onchange' est déclaré dans l'élément, il n'est pas remplacé et l'ancien code d'événement est déclenché. De plus, je préférerais utiliser une fonction de portée intérieure dans l'événement Onchange. Ainsi, je peux réellement utiliser le code que je me réfère dans l'ammentation.
@Vitorhsb - de votre ajout à votre question, le problème reste du foo () code> étant appelé. Est-ce dans IE? Vous pouvez essayer de définir sa propriété
Onchange code> sur NULL:
$ ("# sel_id") [0] .nchange = null; code>. Je ne sais pas si cela aidera, mais peut-être valoir la peine d'essayer.
C'est bien! Il semble y avoir un bogue dans IE8 associé à la liaison d'un événement de changement à une sélection. J'ai essayé presque tout (AddeventListener et JQuery .Changer et .bind. Aucun n'a travaillé. Mais, cela a fait. Merci!
@Cary: content que cela ait travaillé, mais c'est très étrange que la manipulation des événements de JQuery ne fonctionnait pas pour vous. Ils font un très bon travail de correction de ces problèmes de navigateur. Quoi qu'il en soit, content que vous ayez trouvé une solution.
Utilisez la fonction de changement de jQuery.
$('#sel_id').change(function() { //your code });
De cette façon, il déclenche toujours l'événement Onchange déclaré dans la balise Select.
Puis utilisez $ ('# sel_id'). Unbind ("changement") d'abord
$ ('# sel_id'). UNBIND ('Change') CODE> Ne supprimez pas l'événement précédent déclaré dans la balise HTML, il supprime uniquement les événements Bind déclarés Dinamiquement.
Voici un moyen de le faire en utilisant uniquement JavaScript: