2012-01-03 2 views
1

Ceci est mon extrait de code:jQuery - après() - incendies de fonction deux fois

$.ctrl('J', function() { 

    $("#"+currentId).after('<div contentEditable="true">test</div>'); 

}); 

Après l'exécuter, 2 divs avec "test" seront ajoutés au lieu de 1.

Qu'est-ce que je manque ?

Ceci est la fonction CTRL:

$.ctrl = function(key, callback, args) { 

    var isCtrl = false; 

    $(document).keydown(function(e) { 
     if (!args) args = []; 
     if (e.ctrlKey) isCtrl = true; 
     if (e.keyCode == key.charCodeAt(0) && isCtrl) { 
      callback.apply(this, args); 
      return false; 
     } 
    }).keyup(function(e) { 
     if (e.ctrlKey) isCtrl = false; 
    }); 
}; 

Merci à l'avance.

Salutations

Edit:

peut-être qu'il a quelque chose à voir avec ceci:

$('div[id|="edid"]').focus(function() { 


     $('div[id|="edid"]').removeClass('onFocus'); 

     $(this).addClass('onFocus'); 

     var currentId = $(this).attr('id'); 
}); 
+2

Cela semble fonctionner correctement: http://jsfiddle.net/6RPhs/. – pimvdb

+0

Assurez-vous de ne pas appeler '$ .ctrl' deux fois. Cela pourrait provoquer le comportement que vous décrivez. – cheeken

+0

C'est étrange. Peut-être qu'il a quelque chose à faire avec le $ ("#" + currentId). Je l'édite dans mon message d'origine. – user1126272

Répondre

1

J'ai eu un problème similaire. Peut-être utilisez-vous une ancienne version de jquery?

Major Correctif dans JQuery 1.4.4 - Une fonction liée au document d'événement prêt sera désormais une fois le feu (il a été mise à feu deux fois).

What’s New in JQuery 1.4.4

1

Vous incluez probablement jQuery deux fois dans votre code HTML. Comme ceci:

<script type="text/javascript" src="/scripts/jquery.min.js"></script> 
<script type="text/javascript" src="/scripts/jquery.min.js"></script> 
Questions connexes