我将尽可能缩短我的问题。 我有一个textarea,只要模糊就会隐藏起来:
$('textarea').on('blur', function(){
$(this).hide()
})
我想首先点击按钮点击或不点击
如果点击=>保持textarea showen
如果没有点击=>隐藏textarea
唯一的问题是我要检查的按钮是使textarea可见的按钮
$('button').click(function(){
$('textarea').show().focus()
})
因此,每当我点击按钮时,我都不希望textarea闪烁(如果点击按钮则阻止它隐藏,如果它在其他元素上模糊,则让它隐藏起来)
这是一个Demo
我想过制作一面旗帜,但这是一个两难选择
答案 0 :(得分:3)
我找到了我的问题的答案(感谢Zee Tee的负面观点)
我给了这个post here的学分,因为我得到了什么
所有需要的是检查文档document.activeElement
$('textarea').on('focusout', function(){
$(document).mouseup(function(){
if(document.activeElement.tagName!=='BUTTON'){
$('textarea').hide()
}
})
这是工作更新Demo
每当我点击此按钮后,textarea就不会闪烁
感谢大家的努力
答案 1 :(得分:1)
我不需要进行blur()
来电,当你想做的就是让你的按钮处理textarea的显示/隐藏。
$("button").click(function(e){
$("textarea").toggle();
});
答案 2 :(得分:0)
我建议你留一个标志来检查它是否被点击。你可以尝试这个....
var isClick = false;
$('textarea').on('blur', function(){
if(isClick == false){
$(this).hide()
}
})
$('button').click(function(){
isClick = true;
$('textarea').show().focus()
})
答案 3 :(得分:0)
检查从模糊函数返回的事件对象的相关目标是否是按钮。
$('textarea').on('blur', function (e) {
if (!e.relatedTarget.tagName == 'BUTTON') {
$(this).hide()
}
})
$('button').click(function () {
$('textarea').show().focus()
})