为什么==和!=奇怪的逻辑发生?

时间:2018-03-13 22:24:35

标签: jquery

<ul role="abc">
<li class role="presentation"><a href="#tab-aaa" data-toggle="tab">aaa </a></li>
<li class="active" role="presentation"><a href="#tab-bbb" data-toggle="tab">bbb </a></li>
<li class role="presentation"><a href="#tab-ccc" data-toggle="tab">ccc </a></li>
</ul>

<script type="text/javascript">
if ($('ul[role="abc"] li').hasClass('active')){
    if($(this).find('a').attr('href') != '#tab-bbb') { //problem here
        alert ("bbb is active");
    }
}
</script>

从上面的代码中,请参阅//problem here那里的评论

据说代码应该是if($(this).find('a').attr('href') == '#tab-bbb')然后只会弹出警报吗?但是当我使用==时,它无法弹出警报。

为什么我将其更改为“!=”符号然后才会弹出警报?

2 个答案:

答案 0 :(得分:1)

第一个if只是测试li任何是否具有active类。但它并没有将this设置为li,因此您无法使用$(this).find()来查找其中的内容。

您可以将这一切组合到一个选择器中:

if ($("ul[role='abc'] li.active a[href='#tab-bbb']").length != 0) {
    alert("bbb is active");
}

答案 1 :(得分:0)

既然不能使用$(this),我就可以解决这个问题,最终解决了这个问题,并且它可以工作。

var href4 = $('ul[role="abc"] li.active a').attr('href');
if (href4 == "#tab-bbb"){
    alert ("bbb is active");
}