我正在开发一个元素组,并希望在元素'focusout
事件触发时触发一些功能。
但是我必须监控焦点发生的方式,这会引起焦点。
假设focusout
绑定了元素A.如果用户点击element B
,焦点输出应该调用function_B
,如果用户点击element C
焦点输出应该致电function_C
。元素B,C不应该在元素A中。
pseudo code :
$( element_A ).focusout(function() {
element_user_interaction = wether user clicks on element_B or element_C
if(element_user_interaction == element_B){
function_B();
}else if(element_user_interaction == element_C){
function_C();
}
});
I found a code from SO. see the accepted answer
$(document).mouseup(function (e)
{
var container = $("YOUR CONTAINER SELECTOR");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
container.hide();
}
});
我试过但无法更改上面的代码以匹配伪代码。
答案 0 :(得分:2)
您应该使用事件relatedTarget
的属性。
$( element_A ).focusout(function(e) {
if(element_B.is(e.relatedTarget)){
function_B();
}else if(element_C.is(e.relatedTarget)){
function_C();
}
});
警告:如果您点击表单元素以外的内容(即图片或文字),则此属性为null
。这是合乎逻辑的,但可能令人困惑。
在http://www.w3schools.com/jsref/event_focus_relatedtarget.asp
上查看更多详情