comment faire pour modifier l'événement onclick avec jquery?
J'ai créer un fichier js dans lequel je suis entrain de créer la dynamique de la table et de l'évolution dynamique de l'événement click pour le calendrier mais onclicking le calendrier de l'image pour la dynamique de la table, calendrier déroulant dans l'ancien calendrier de l'image.
Merci de m'aider
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');
}
});
});
- Essayez le jQUery UI Datepicker. Il fonctionne vraiment bien pour moi. jqueryui.com/demos/datepicker
Vous devez vous connecter pour publier un commentaire.
Vous pouvez facilement changer la
onclick
cas d'un élément avec jQuery sans l'exécution de la nouvelle fonction avec:Par écrit cette ligne, vous devez changer les
onclick
attribut de#id
.Vous pouvez également utiliser:
document.getElementById("id").attribute("onclick","new_function_name()");
new_function_name
, vous pouvez écrire :$("#id").attr("onclick","new_function_name('"+param1+"', '"+param2+"')");
C'est ce que je cherchais quand j'ai trouvé cette réponse, et il m'a aidé. +1 `Supprimer l'ancien gestionnaire d'événement
Et fixez la nouvelle
La mise à jour de ce post (2015) : unbind/bind ne doit pas être utilisé plus avec jQuery 1.7+. Utilisez plutôt la fonction off " (éteint).
Exemple :
Assurez-vous que vous appelez un non-paramètre de la fonction .cliquez sur, sinon elle sera ignorée.
$('#id').off('click').on("click", function() { ... });
on
etoff
cliquez sur événements sur leurs propres lignes en retrait pour le rendre plus lisible (les commentaires il est difficile de montrer), mais ma version n'est plus de changer le look de la déclaration. Chaque fois que vous appelez$(...)
, il fait une recherche de cet élément. Écrit$("#id")
deux fois à la recherche de l'élément dans le DOM deux fois, sens ma version est deux fois plus efficace. Avec l'id des recherches, c'est une amélioration, mais avec classe/élément/propriété/données de recherches, il ajoute. Pour le faire fonctionner de manière aussi efficace que la mienne, mettre$("#id")
dans unvar
et de travail hors de cela.$('#id').attr('onclick', 'function()');
Droit maintenant (11 Juillet 2015) cette solution est encore de travail (jquery 2.1.4); à mon avis, il est le meilleur à ramasser.
Si vous souhaitez modifier un événement onclick avec jQuery, vous feriez mieux d'utiliser les fonctions .sur() et .off() avec un espace de noms (voir la documentation).
Utilisation
.on()
pour créer votre événement et.off()
pour l'enlever. Vous pouvez également créer un objet global commeg_specific_events_set = {};
pour éviter les doublons:JS:
CSS:
HTML:
(2019), j'ai utilisé
$('#'+id).removeAttr().off('click').on('click', function(){...});
J'ai essayé
$('#'+id).off().on(...)
, mais il ne serait pas travailler pour réinitialiser l'attribut onClick chaque fois qu'il était appelé à être remis à zéro.- Je utiliser
.on('click',function(){...});
de rester loin d'avoir à citer bloquer tous mes fonctions javascript.L'O. P. peut maintenant utiliser:
$(this).removeAttr('onclick').off('click').on('click', function(){
displayCalendar(document.prjectFrm[ia + 'dtSubDate'],'yyyy-mm-dd', this);
});
Où cela est venu à travers pour moi c'est quand mon div a été définie avec l'attribut onClick définie de manière statique:
<div onclick = '...'>
Sinon, si seulement j'avais attaché dynamiquement un port d'écoute à elle, je l'aurais utilisé le
$('#'+id).off().on('click', function(){...});
.Sans off('click') mon onClick les auditeurs ont été ajoutés ce n'est pas remplacé.
@Amirali
jette:
dans google chrome.
Élément existe et est déversé dans la console;