function textarea_replace(that){
var charnum = $(that).attr('data-char'),
op = $(that).attr('data-op'),
target = $(that).find('h2'),
textarea = $(target).next('textarea'),
testo = $(target).text();
$(target).next('textarea').val(testo).show().focus();
$(target).css({ 'display': 'none' });
$(textarea).on({
blur: function(e){
e.stopPropagation();
testo_fin = $(this).val()
if (testo_fin.length > charnum) {
var text_cut = testo_fin.substr( 0, charnum )
$(this).prev().css({ 'display': 'block' }).text(text_cut)
} else {
$(this).prev().css({ 'display': 'block' }).text(testo_fin)
}
$(this).hide();
$(textarea).off('blur');
send_textarea(op, testo_fin, url_global);
}
});
}
我称之为事件处理程序
$('.edit_box').on({
click: function(e){
$('.edit_box').off('click');
that = $(this)
textarea_replace(that);
}
});
我不明白如何暂时停止并重新激活点击事件,因为如果我点击textarea它会调用另一个事件并发送文本2次(或更多次)。
答案 0 :(得分:1)
我不确定我是否真的不知道应该在这里发生什么,但你总是可以使用jquery的.stop()方法来清除动画队列(如果你添加了自定义的东西,还可以使用clearQueue())
$(".edit_box").click(function(){
doSomething($(this));
}
function doSomething(what){
what.stop() //Clears the queue, avoiding weird behaviour
//Eventually change some properties, restore your textarea, etc.
blur(what)
}
function blur(what){
//Your stufff here
}