当元素具有x类的父元素时的焦点事件

时间:2015-09-16 11:40:32

标签: jquery

当你专注于页面上的任何元素时,如果元素位于具有特定类的div中,则需要触发事件。以下内容始终返回no:

$('body').focusin(function () {
  if ($(':focus').parents('.my-class').length) {
    console.log('yes');
  } else {
    console.log('no');
  }
});

当我在函数中添加以下内容时,我可以看到始终记录第一个聚焦元素。当焦点转移到新元素时,它不会更新。

var focus = $(':focus');
console.log(focus);

2 个答案:

答案 0 :(得分:0)

试试这个

StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();

// Hide the status bar
Task hidingStatusBarTask = statusBar.HideAsync();
hidingStatusBarTask.Wait();

这是一个有效的Jsbin

https://jsbin.com/dovivonizo/edit?html,js,console,output

基本上你需要监听任何输入聚焦的时间,然后检查它是$('input, a').on('focus',function(e){ if($(this).parents('.my-class').hasClass('my-class')){ console.log('should fire'); } }); 的父元素,看看它是否有div类或你要检查的任何类

你仍然需要返回true,这就是为什么你仍然需要最后的my-class才能返回true。

答案 1 :(得分:0)

focusin绑定到预期的div应该按照https://api.jquery.com/focusin/

中的说明进行操作
    $('div.my-class').focusin(function() {
        //do your stuff
    });

如果它是动态添加的div,您可以使用on

来使用事件委派
    $(document.body).on('focusin', 'div.my-class', function() {
        //do your stuff
    });