我有一个包含文字输入#usernameInput
和链接#saveLink
的表格单元格。使用jQuery我有一个分配给#saveLink
的click事件的函数。
我想要实现的是,当#usernameInput
失去焦点时我想隐藏它。除非它失去焦点#saveLink
。
换句话说,如果用户点击#saveLink
以外的其他任何地方我要隐藏#usernameInput
,否则请在#saveLink
上调用点击事件。
我处理$('#usernameInput').focusout()
没问题,但我无法检测是否点击了保存链接。
这是我到目前为止所拥有的。
<script type="text/javascript">
$('#usernameInput').focusout(function ()
{
if (!$('#saveLink').is(':focus'))
{
$('#usernameInput').hide();
}
return;
});</script>
答案 0 :(得分:5)
我想要实现的目标是什么时候 '#usernameInput'失去了焦点我 想隐藏它。除非失去焦点 到'#saveLink'。换句话说,如果 用户单击除以外的任何位置 '#saveLink'我想要隐藏 '#usernameInput'否则调用 单击'#saveLink'上的事件。
也许你可以将一个事件绑定到正文并只检查e.target
$("body").click(function(event){
if(!$(event.target).is("#saveLink")){
$("#usernameInput").hide();
}
});
免责声明 这只是现在的伪代码...稍微更新。
答案 1 :(得分:2)
我不确定这是否是新的,但我发现今天找到了更好的方法(3。5年后): event.relatedTarget 是您实际点击的元素。
$elementLosingFocus.focusout(function (event) {
var $elementYouAreTesting;
$elementYouAreTesting = $("#whatever");
if (elementYouAreTesting[0] === event.relatedTarget) {
// you clicked the element you were testing!
} else {
// you clicked something else
}
});