一种监视元素焦点如何在jquery中发生的方法

时间:2015-11-04 09:20:17

标签: javascript jquery

我正在开发一个元素组,并希望在元素'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();
    }
});

我试过但无法更改上面的代码以匹配伪代码。

1 个答案:

答案 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();
   }
});
  • 对于onfocus和onfocusin事件,相关元素是元素 失去了焦点。
  • 对于onblur和 onfocusout 事件,相关 element是GOT关注的元素。

警告:如果您点击表单元素以外的内容(即图片或文字),则此属性为null。这是合乎逻辑的,但可能令人困惑。

http://www.w3schools.com/jsref/event_focus_relatedtarget.asp

上查看更多详情