带有If语句的JavaScript event.target

时间:2017-11-30 11:36:36

标签: javascript jquery

为什么其他{}部分不起作用。什么是解决方案。?.........在console.log' in'正在展示,但是' out'没有显示。感谢。



var header = $('header');
header.mouseover(function(event) {
  if ($(event.target).parents('li').attr('rel').length > 0) {
    console.log('in')
  } else {
    console.log('out')
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
  <ul>
    <li rel="one"> One Element</li>
    <li rel="two"> One Element</li>
    <li> Other Element</li>
    <li> Other Element</li>
    <li> Other Element</li>
    <li> Other Element</li>
  </ul>
</header>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

这是一种做法

原始代码。

$(event.target).parents('li').attr('rel').length

.parent('li')没用,因为我们已经在li元素。

正确的行将是

$(event.target).attr('rel').length

其次$(event.target).parents('li').attr('rel')到此为止,我们会为undefined元素获取li,而undefined没有length属性,因此我们可以使用低于ternary if条件以检查此元素是否实际存在,然后我们可以返回length属性,只需0

var header = $('header');
header.mouseover(function (event) {
    var elem = $(event.target).attr('rel') ? $(event.target).attr('rel').length : 0;
    if (elem > 0) {
        console.log('in')
    }
    else {
        console.log('out')
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
    <ul>
        <li rel="one"> One Element</li>
        <li rel="two"> One Element</li>
        <li> Other Element</li>
        <li> Other Element</li>
        <li> Other Element</li>
        <li> Other Element</li>
    </ul>
 </header>