2017-07-24 76 views
1

我目前正试图触发一个事件,当用户单击一个按钮时触发一个事件,一旦用户点击一个输入字段,请点击下面的代码或jsFiddle下面的代码: -停止功能事件第二次触发

$('.button').click(function() { 
    $('*').css('cursor', 'crosshair'); 
    $('input').one("click",function (event) { 
     alert(event.pageX, event.pageY); 
    }); 
}); 

我有jsfiddle

的问题,我有一次是在输入字段的功能,需要停止/完成用户点击一个例子。但是,如果用户点击第一个输入字段后点击第二个输入字段,它将再次运行该函数。

我试图把

return false; 

里面的代码,以阻止进一步的传播,不过这并没有奏效。

任何帮助将不胜感激。

在此先感谢。

+0

你想停止传播或者是你想阻止事件触发第二次?如果是前者,请查看https://api.jquery.com/event.stoppropagation/,如果是后者,则查看使用http://api.jquery.com/one/ – Pete

+0

我希望事件停止第二次发射。 –

回答

3

你可以使用.off()删除eventlistener后,你点击一次输入字段。是这样的:

$('.button').click(function() { 
    $('*').css('cursor', 'crosshair'); 
    $('input').one("click",function (event) { 
     alert(event.pageX, event.pageY); 
     $('input').off('click'); 
    }); 
}); 
+0

这是美丽的,简单的和重点。谢谢。 –

+0

欢迎您,考虑接受答案,如果它有帮助。干杯! – Dij

+0

会做,它仍然有2分钟的时间去。 –

0

您可以使用事件是这样的:

$('.myBtn').on('click', function(event) 
{ 
    event.stopPropagation(); 
}) 

这种停止与事件处理程序链接的所有事件传播。更多信息可以在这里找到:http://api.jquery.com/event.stopPropagation/

+0

一旦我点击第二个输入字段,这仍然在运行该功能。 –

+0

@TonyHensler这是因为你有一个单击事件内的点击事件 - 他们应该是分开的.. – ThisGuyHasTwoThumbs

0

尝试:

var buttonClicked = false; 
$('.button').click(function() { 
    $('*').css('cursor', 'crosshair'); 
    buttonClicked = true; 
}); 
$('input').one("click",function (event) { 
    if (buttonClicked) 
    { 
     buttonClicked = false; 
     alert(event.pageX, event.pageY); 
    } 
}); 
相关问题