2012-01-03 4 views
1

Это мой фрагмент кода:JQuery - после того, как() - функция срабатывает дважды

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

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

}); 

После его выполнения, 2 дивы с «тест» будет добавлен вместо 1.

Что я упускаю ?

Это функция 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; 
    }); 
}; 

Спасибо заранее.

Приветствия

Edit:

может быть, это что-то делать с этим:

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


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

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

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

Кажется, что все нормально: http://jsfiddle.net/6RPhs/. – pimvdb

+0

Убедитесь, что вы не вызываете '$ .ctrl' дважды. Это может вызвать поведение, которое вы описываете. – cheeken

+0

Это странно. Возможно, ему есть что-то с помощью $ ("#" + currentId). Я редактирую его в проводке моего происхождения. – user1126272

ответ

1

Я имел подобную проблему. Может быть, вы используете старую версию jQuery?

Major Исправление ошибки в JQuery 1.4.4 - функция, привязанного к документу готового события теперь будут стрелять один раз (это стрелял дважды).

What’s New in JQuery 1.4.4

1

Вы, вероятно, в том числе JQuery два раза в вашем HTML-коде. Например:

<script type="text/javascript" src="/scripts/jquery.min.js"></script> 
<script type="text/javascript" src="/scripts/jquery.min.js"></script> 
Смежные вопросы