Jquery - 模糊和点击某个元素时调用函数?

时间:2010-11-02 22:46:02

标签: javascript jquery

我想在某个字段变得模糊时调用函数,但仅在单击某个元素时调用。我试过了

$('form').click(function() {
    $('.field').blur(function() {
        //stuff
    });
});

$('.field').blur(function() {
    $('form').click(function() {
        //stuff
    });
});

但两种方法都不起作用,我认为这是因为事件同时发生了?

3 个答案:

答案 0 :(得分:0)

在大多数浏览器中,您可以使用document.activeElement来实现此目的:

$('.field').blur(function(){
    if ($(document.activeElement).closest('form').length) {
        // an element in your form now has focus
    }
});

答案 1 :(得分:0)

<强> HTML

<form>
    <input class="field" type="textarea" />
    <input class="field" type="textarea" />
</form>
<div class="click-me-class" id="click-me">Click Me</div>
<div class="click-me-class">Click Me Class</div>

<强>的jQuery

$('.field').blur(function() {
    $('#click-me').click(function(e) {
        foo = $(this).data('events').click;
        if(foo.length <= 1) {
            // Place code here
            console.log("Hello");
        }
        $(this).unbind(e);
    });
});

您可以在此处测试:http://jsfiddle.net/WfPEW/7/

答案 2 :(得分:0)

我已经编辑了我的答案,因为我们必须考虑到事件每次都被记录。

这不是100%令人满意,我不推荐这种复杂的做事方式,但它更为近似。

您必须使用全局变量来考虑字段模糊的事实。在窗口事件中,它会自动重置为0,但如果单击“click-me”,则会在窗口事件之前进行验证,因为窗口事件稍后会被冒泡,它会在“click-me”之后立即发生点击事件

Working code

$(window).click(function(e)
                {
  $("#result").html($("#result").html()+" isBlurred=0<br/>");
                        isBlurred=0;
                });

var isBlurred=0;

$('.field').blur(function() {
      $("#result").html($("#result").html()+" isBlurred=1<br/>");
    isBlurred=1;
});

    $('#click-me').click(function(e) {                  
        if(isBlurred==1)
        {
            $("#result").html($("#result").html()+" clicked<br/>");
        }

    });

“。field”将是输入,“#click-me”将只被点击一次。