Примечание, $.live()
устарело;Вместо этого следует использовать $.on()
или $.delegate()
.По какой-то причине правильное использование любого из них продолжает уклоняться от меня, поэтому я не могу предложить, как это сделать, но вам следует избегать $.live()
, так как в конечном итоге он будет удален и, к примеру, станет проблемой производительности.
Насколько я могу судить, строка:
$('.textEdit').live('focusin', function (e) {
Никогда не работает в Chrome.Это нормально, потому что кажется, что
$('.textEdit').live('click', function (e) {
Должно работать нормально.
Я бы изменил ваш подход и использовал бы блочную переменную как хорошо, а не отменял тайм-аутНапример:
var renderHandler,
blockRender = false;
$("textarea").live('focusout', function (e) {
var currentNote = this;
renderHandler = setTimeout(function(){
renderNote(currentNote);
}, 100);
});
$('.textEdit').live('click', function (e) {
blockRender = true;
});
А затем в renderNote()
:
function renderNote( note ){
var itemContent = $(note).val();
if (blockRender) {
blockRender = false;
return false;
}
itemContent = htmlStrip(itemContent);
itemContent = itemContent.replace(/\n/g, "<br/>");
itemContent = itemContent
.replace(/\[b\]/gi, "<b>")
.replace(/\[\/b\]/gi, "</b>")
.replace(/\[i\]/gi, "<i>")
.replace(/\[\/i\]/gi, "</i>")
.replace(/\[s\]/gi, "<s>")
.replace(/\[\/s\]/gi, "</s>");
$(note).replaceWith("<p class='notes'>"+ itemContent +"</p>");
}
http://jsfiddle.net/TsuZn/3/