我想在某个字段变得模糊时调用函数,但仅在单击某个元素时调用。我试过了
$('form').click(function() {
$('.field').blur(function() {
//stuff
});
});
和
$('.field').blur(function() {
$('form').click(function() {
//stuff
});
});
但两种方法都不起作用,我认为这是因为事件同时发生了?
答案 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”之后立即发生点击事件
$(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”将只被点击一次。