2012-01-03 40 views
1

這是我的代碼片段:jQuery的 - 後() - 功能閃光兩次

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

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

}); 

它運行後,2周的div「測試」將代替添加的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; 
    }); 
}; 

預先感謝您。

問候

編輯:

也許有事情做與此:

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


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

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

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

這似乎很好地工作:http://jsfiddle.net/6RPhs/。 – pimvdb 2012-01-03 13:39:00

+0

確保你沒有兩次調用'$ .ctrl'。這可能會引發你所描述的行爲。 – cheeken 2012-01-03 13:43:28

+0

這很奇怪。也許它與$(「#」+ currentId)有關。我正在編輯它在我的原始發佈。 – user1126272 2012-01-03 13:55:49

回答

1

我有一個類似的問題。可能你正在使用舊的jQuery版本?

主要漏洞修復中的JQuery 1.4.4 - 綁定到文檔準備事件現在將觸發一次函數(它 被射擊兩次)。

What’s New in JQuery 1.4.4

1

你可能包括在你的HTML代碼jQuery的兩倍。就像這樣:

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