comment changer l’événement onclick avec jquery?

J’ai créé un fichier js dans lequel je crée la table dynamic et modifie dynamicment l’événement de clic pour le calendrier mais en cliquant sur l’image de calendrier pour la table générée dynamic, la fenêtre contextuelle du calendrier précédent. Aidez-moi, s’il vous plaît

code

/***------------------------------------------------------------ * *Developer: Vipin Sharma * *Creation Date: 20/12/2010 (dd/mm/yyyy) * *ModifiedDate ModifiedBy Comments (As and when) * *-------------------------------------------------------------*/ var jq = jQuery.noConflict(); var ia = 1; jq(document).ready(function(){ jq("#subtaskid1").click(function() { if(ia<=10){ var create_table = jq("#orgtable").clone(); create_table.find("input").each(function() { jq(this).attr({ 'id': function(_, id) { return ia + id }, 'name': function(_, name) { return ia + name }, 'value': '' }); }).end(); create_table.find("select").each(function(){ jq(this).attr({ 'name': function(_,name){ return ia + name } }); }).end(); create_table.find("textarea").each(function(){ jq(this).attr({ 'name': function(_,name){ return ia + name } }); }).end(); create_table.find("#f_trigger_c").each(function(){ var oclk = " displayCalendar(document.prjectFrm['"+ ia +"dtSubDate'],'yyyy-mm-dd', this)"; //ERROR IS HERE var newclick = new Function(oclk); jq(this).click(newclick); }).end(); create_table.appendTo("#subtbl"); jq('#maxval').val(ia); ia++; }else{ var ai = ia-1; alert('Only ' + ai + ' SubTask can be insert'); } }); }); 

Vous pouvez facilement changer l’événement onclick d’un élément avec jQuery sans exécuter la nouvelle fonction avec:

 $("#id").attr("onclick","new_function_name()"); 

En écrivant cette ligne, vous modifiez en fait l’atsortingbut onclick de #id .

Vous pouvez aussi utiliser:

document.getElementById("id").atsortingbute("onclick","new_function_name()");

Supprimer l’ancien gestionnaire d’événements

 jQuery('#id').unbind('click'); 

Et attache le nouveau

 jQuery('#id').click(function(){ // your code here }); 

Mise à jour de cet article (2015): ne plus utiliser / jind avec bind ne doit plus être utilisé avec jQuery 1.7+. Utilisez à la place la fonction off (). Exemple :

 $('#id').off('click'); $('#id').click(function(){ myNewFunction(); //Other code etc. }); 

Assurez-vous d’appeler une fonction autre qu’un paramètre dans .click, sinon elle sera ignorée.

$('#id').attr('onclick', 'function()');

En ce moment (11 juillet 2015), cette solution fonctionne toujours (jquery 2.1.4); à mon avis, c’est le meilleur à prendre.

Si vous voulez changer un événement onclick spécifique avec jQuery, il vaut mieux utiliser les fonctions .on () et .off () avec un espace de noms (voir documentation).

Utilisez .on() pour créer votre événement et .off() pour le supprimer. Vous pouvez également créer un object global tel que g_specific_events_set = {}; pour éviter les doublons:

 $('#alert').click(function() { alert('First alert!'); }); g_specific_events_set = {}; add_specific_event = function(namespace) { if (!g_specific_events_set[namespace]) { $('#alert').on('click.' + namespace, function() { alert('SECOND ALERT!!!!!!'); }); g_specific_events_set[namespace] = true; } }; remove_specific_event = function(namespace) { $('#alert').off('click.' + namespace); g_specific_events_set[namespace] = false; }; $('#add').click(function(){ add_specific_event('eventnumber2'); }); $('#remove').click(function(){ remove_specific_event('eventnumber2'); }); 
 div { display:inline-block; vertical-align:top; margin:0 5px 1px 5px; padding:5px 20px; background:#ddd; border:1px solid #aaa; cursor:pointer; } div:active { margin-top:1px; margin-bottom:0px; } 
  
Alert
Add event
Remove event

@ Amirali

 console.log(document.getElementById("SAVE_FOOTER")); document.getElementById("SAVE_FOOTER").atsortingbute("onclick","console.log('c')"); 

jette:

 Uncaught TypeError: document.getElementById(...).atsortingbute is not a function 

en chrome.

L’élément existe et est vidé dans la console;