检查按钮是否被单击jquery

时间:2014-09-13 16:04:10

标签: jquery click show-hide

我将尽可能缩短我的问题。 我有一个textarea,只要模糊就会隐藏起来:

$('textarea').on('blur', function(){
    $(this).hide()
})

我想首先点击按钮点击或不点击

如果点击=>保持textarea showen
如果没有点击=>隐藏textarea

唯一的问题是我要检查的按钮是使textarea可见的按钮

$('button').click(function(){
    $('textarea').show().focus()
})

因此,每当我点击按钮时,我都不希望textarea闪烁(如果点击按钮则阻止它隐藏,如果它在其他元素上模糊,则让它隐藏起来) 这是一个Demo
我想过制作一面旗帜,但这是一个两难选择

4 个答案:

答案 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();
 });

小提琴:http://jsfiddle.net/9suamkbm/4/

答案 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()
})

jsFiddle